HANDLE FindFirstFileW(LPCWSTR lpFileName, LPWIN32_FIND_DATAW lpFindFileData)
{
char* utfFileName = NULL;
+ HANDLE h;
+ WCHAR* unicodeFileName;
+ int length;
+
LPWIN32_FIND_DATAA fd = (LPWIN32_FIND_DATAA)malloc(sizeof(WIN32_FIND_DATAA));
if (!fd)
{
return INVALID_HANDLE_VALUE;
}
- HANDLE h = FindFirstFileA(utfFileName, fd);
+ h = FindFirstFileA(utfFileName, fd);
free(utfFileName);
if (h != INVALID_HANDLE_VALUE)
{
CopyMemory(lpFindFileData, fd, 352);
- WCHAR* unicodeFileName = NULL;
- int length = ConvertToUnicode(CP_UTF8, 0, fd->cFileName, -1, &unicodeFileName, 0) * 2;
+ unicodeFileName = NULL;
+ length = ConvertToUnicode(CP_UTF8, 0, fd->cFileName, -1, &unicodeFileName, 0) * 2;
if (length == 0)
{
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
+ free(fd);
return INVALID_HANDLE_VALUE;
}
CopyMemory(&lpFindFileData->cFileName, unicodeFileName, length);
char* fullpath;
int pathlen;
int namelen;
+ UINT64 ft;
ZeroMemory(lpFindFileData, sizeof(WIN32_FIND_DATAA));
pathlen = strlen(pFileSearch->lpPath);
fullpath = (char*)malloc(pathlen + namelen + 2);
- if (fullpath == NULL) {
+ if (fullpath == NULL)
+ {
return INVALID_HANDLE_VALUE;
}
memcpy(fullpath, pFileSearch->lpPath, pathlen);
fullpath[pathlen+namelen+1] = 0;
if (lstat(fullpath, &fileStat) != 0)
+ {
+ free(fullpath);
return INVALID_HANDLE_VALUE;
+ }
+
+ free(fullpath);
lpFindFileData->dwFileAttributes = 0;
if (! (fileStat.st_mode & S_IWUSR))
lpFindFileData->dwFileAttributes |= FILE_ATTRIBUTE_READONLY;
- UINT64 ft;
#ifdef _DARWIN_FEATURE_64_BIT_INODE
ft = STAT_TIME_TO_FILETIME(fileStat.st_birthtime);
#else
BOOL FindNextFileW(HANDLE hFindFile, LPWIN32_FIND_DATAW lpFindFileData)
{
+ WCHAR* unicodeFileName;
+ int length;
+
LPWIN32_FIND_DATAA fd = (LPWIN32_FIND_DATAA)malloc(sizeof(WIN32_FIND_DATAA));
if (!fd)
{
{
CopyMemory(lpFindFileData, fd, 352);
- WCHAR* unicodeFileName = NULL;
- int length = ConvertToUnicode(CP_UTF8, 0, fd->cFileName, -1, &unicodeFileName, 0) * 2;
+ unicodeFileName = NULL;
+ length = ConvertToUnicode(CP_UTF8, 0, fd->cFileName, -1, &unicodeFileName, 0) * 2;
if (length == 0)
{
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
+ free(fd);
return FALSE;
}
CopyMemory(&lpFindFileData->cFileName, unicodeFileName, length);