# HG changeset patch # User mbaesken # Date 1541693447 -3600 # Thu Nov 08 17:10:47 2018 +0100 # Node ID caad6660ad280df0a8501753544f6a046b1108c7 # Parent a1eb4f1b94c1e2abe79263e4cba38886550dd178 8213532: add missing LocalFree calls after using FormatMessage(A) [windows] diff --git a/src/java.desktop/windows/native/libawt/windows/ThemeReader.cpp b/src/java.desktop/windows/native/libawt/windows/ThemeReader.cpp --- a/src/java.desktop/windows/native/libawt/windows/ThemeReader.cpp +++ b/src/java.desktop/windows/native/libawt/windows/ThemeReader.cpp @@ -251,7 +251,7 @@ DWORD lastError = GetLastError(); if (lastError != 0) { LPSTR msgBuffer = NULL; - FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | + DWORD fret= FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, @@ -261,8 +261,14 @@ // it's an output parameter when allocate buffer is used 0, NULL); - DTRACE_PRINTLN3("Error: hres=0x%x lastError=0x%x %s\n", hres, + if (fret != 0) { + DTRACE_PRINTLN3("Error: hres=0x%x lastError=0x%x %s\n", hres, lastError, msgBuffer); + LocalFree(msgBuffer); + } else { + DTRACE_PRINTLN2("Error: hres=0x%x lastError=0x%x \n", hres, + lastError); + } } } #endif diff --git a/src/java.desktop/windows/native/libawt/windows/awt_Debug.cpp b/src/java.desktop/windows/native/libawt/windows/awt_Debug.cpp --- a/src/java.desktop/windows/native/libawt/windows/awt_Debug.cpp +++ b/src/java.desktop/windows/native/libawt/windows/awt_Debug.cpp @@ -182,7 +182,7 @@ int ret = IDNO; static jboolean headless = isHeadless(); - FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | + DWORD fret= FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, @@ -197,7 +197,9 @@ } // format the assertion message _snprintf(assertMsg, ASSERT_MSG_SIZE, AssertFmt, expr, file, line, lastError, msgBuffer); - LocalFree(msgBuffer); + if (fret != 0) { + LocalFree(msgBuffer); + } // tell the user the bad news fprintf(stderr, "*********************\n"); diff --git a/src/jdk.accessibility/windows/native/common/AccessBridgeDebug.cpp b/src/jdk.accessibility/windows/native/common/AccessBridgeDebug.cpp --- a/src/jdk.accessibility/windows/native/common/AccessBridgeDebug.cpp +++ b/src/jdk.accessibility/windows/native/common/AccessBridgeDebug.cpp @@ -66,6 +66,7 @@ if (lpMsgBuf != NULL) { strncat((char *)retbuf, ": ", sizeof(retbuf) - strlen(retbuf) - 1); strncat((char *)retbuf, (char *)lpMsgBuf, sizeof(retbuf) - strlen(retbuf) - 1); + LocalFree(lpMsgBuf); } return (char *)retbuf; }