Simplified code for FindFirstFileA, now always using FindClose
authorArmin Novak <anovak@thinstuff.com>
Mon, 2 Sep 2013 14:25:34 +0000 (16:25 +0200)
committerArmin Novak <anovak@thinstuff.com>
Thu, 5 Sep 2013 10:14:35 +0000 (12:14 +0200)
for cleanup.

winpr/libwinpr/file/file.c

index 3df76f3..b296d34 100644 (file)
@@ -444,13 +444,13 @@ HANDLE FindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData)
 
        if (lstat(pFileSearch->lpPath, &fileStat) < 0)
        {
-               free(pFileSearch);
+               FindClose(pFileSearch);
                return INVALID_HANDLE_VALUE; /* stat error */
        }
 
        if (S_ISDIR(fileStat.st_mode) == 0)
        {
-               free(pFileSearch);
+               FindClose(pFileSearch);
                return INVALID_HANDLE_VALUE; /* not a directory */
        }
 
@@ -460,7 +460,7 @@ HANDLE FindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData)
 
        if (!pFileSearch->pDir)
        {
-               free(pFileSearch);
+               FindClose(pFileSearch);
                return INVALID_HANDLE_VALUE; /* failed to open directory */
        }
 
@@ -479,7 +479,7 @@ HANDLE FindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData)
                }
        }
 
-       free(pFileSearch);
+       FindClose(pFileSearch);
        return INVALID_HANDLE_VALUE;
 }
 
@@ -535,13 +535,20 @@ BOOL FindClose(HANDLE hFindFile)
 
        pFileSearch = (WIN32_FILE_SEARCH*) hFindFile;
 
-       free(pFileSearch->lpPath);
-       free(pFileSearch->lpPattern);
-       closedir(pFileSearch->pDir);
+       if (pFileSearch)
+       {
+               if (pFileSearch->lpPath)
+                       free(pFileSearch->lpPath);
+               if (pFileSearch->lpPattern)
+                       free(pFileSearch->lpPattern);
+               if (pFileSearch->pDir)
+                       closedir(pFileSearch->pDir);
+               free(pFileSearch);
 
-       free(pFileSearch);
+               return TRUE;
+       }
 
-       return TRUE;
+       return FALSE;
 }
 
 BOOL CreateDirectoryA(LPCSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes)