eina: correctly handle and report Eina_File error on Windows.
authorAdrien Nader <adrien@notk.org>
Wed, 11 Feb 2015 10:58:28 +0000 (11:58 +0100)
committerCedric BAIL <cedric@osg.samsung.com>
Wed, 11 Feb 2015 15:38:15 +0000 (16:38 +0100)
@fix

src/lib/eina/eina_file_win32.c

index 01d0c9f..4398e0b 100644 (file)
@@ -372,7 +372,7 @@ eina_file_real_close(Eina_File *file)
         free(map);
      }
 
-   if (file->global_map != MAP_FAILED)
+   if (file->global_map != MAP_FAILED && file->handle != NULL)
      UnmapViewOfFile(file->global_map);
 
    if (file->fm) CloseHandle(file->fm);
@@ -728,6 +728,17 @@ eina_file_open(const char *path, Eina_Bool shared)
 
    if (handle == INVALID_HANDLE_VALUE)
      {
+        LPVOID lpMsgBuf;
+
+        FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
+                      FORMAT_MESSAGE_FROM_SYSTEM |
+                      FORMAT_MESSAGE_IGNORE_INSERTS,
+                      NULL,
+                      GetLastError(),
+                      MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+                      (LPTSTR) &lpMsgBuf,
+                      0, NULL);
+
         switch (GetLastError())
           {
            case ERROR_FILE_NOT_FOUND: