--- old/src/windows/native/java/io/WinNTFileSystem_md.c 2013-02-01 14:01:21.198014574 -0500 +++ new/src/windows/native/java/io/WinNTFileSystem_md.c 2013-02-01 14:01:20.798016548 -0500 @@ -88,21 +88,16 @@ static WCHAR* getFinalPath(const WCHAR *path) { HANDLE h; - WCHAR *result; + WCHAR *result=NULL, *resultTemp=NULL; DWORD error; /* Need Windows Vista or newer to get the final path */ if (GetFinalPathNameByHandle_func == NULL) return NULL; - h = CreateFileW(path, - FILE_READ_ATTRIBUTES, - FILE_SHARE_DELETE | - FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, - OPEN_EXISTING, - FILE_FLAG_BACKUP_SEMANTICS, - NULL); + h = CreateFileW(path, FILE_READ_ATTRIBUTES, + FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); if (h == INVALID_HANDLE_VALUE) return NULL; @@ -115,12 +110,13 @@ DWORD len = (*GetFinalPathNameByHandle_func)(h, result, MAX_PATH, 0); if (len >= MAX_PATH) { /* retry with a buffer of the right size */ - result = (WCHAR*)realloc(result, (len+1) * sizeof(WCHAR)); - if (result != NULL) { + resultTemp = (WCHAR*)realloc(result, (len+1) * sizeof(WCHAR)); + if(resultTemp == NULL) { + free(result); + return NULL; + } + result = resultTemp; len = (*GetFinalPathNameByHandle_func)(h, result, len, 0); - } else { - len = 0; - } } if (len > 0) { /** @@ -258,7 +254,8 @@ int len = (int)wcslen(canonicalPrefix) + MAX_PATH; if (len > MAX_PATH_LENGTH) { WCHAR *cp = (WCHAR*)malloc(len * sizeof(WCHAR)); - if (cp != NULL) { + if (cp != NULL) + { if (wcanonicalizeWithPrefix(canonicalPrefix, pathWithCanonicalPrefix, cp, len) >= 0) {