OSDN Git Service

Fix failed test
[winmerge-jp/winmerge-jp.git] / Src / Environment.cpp
index 3a83376..fcbfeab 100644 (file)
@@ -4,6 +4,7 @@
  * @brief Environment related routines.
  */
 
+#include "pch.h"
 #define POCO_NO_UNWINDOWS 1
 #include "Environment.h"
 #include <windows.h>
@@ -69,12 +70,17 @@ String GetTemporaryFileName(const String& lpPathName, const String& lpPrefixStri
        if (lpPathName.length() > MAX_PATH-14)
                return _T(""); // failure
        int rtn = ::GetTempFileName(lpPathName.c_str(), lpPrefixString.c_str(), 0, buffer);
-       if (!rtn)
+       if (rtn == 0)
        {
-               int err = GetLastError();
-               if (pnerr != nullptr)
-                       *pnerr = err;
-               return _T("");
+               paths::CreateIfNeeded(lpPathName);
+               rtn = ::GetTempFileName(lpPathName.c_str(), lpPrefixString.c_str(), 0, buffer);
+               if (rtn == 0)
+               {
+                       int err = GetLastError();
+                       if (pnerr != nullptr)
+                               *pnerr = err;
+                       return _T("");
+               }
        }
        return buffer;
 }