From 6a28f9e6fbad58ca8c07e19a30881001f21e98f3 Mon Sep 17 00:00:00 2001 From: Petr Pchelko Date: Wed, 14 Aug 2013 16:17:28 +0400 Subject: [PATCH] 8013454: [parfait] Memory leak in jdk/src/windows/native/sun/windows/awt_Cursor.cpp 8012079: [parfait] possible null pointer dereference in jdk/src/windows/native/sun/windows/awt_Font.cpp Reviewed-by: art, serb --- jdk/src/windows/native/sun/windows/awt_Cursor.cpp | 13 ++++++++++--- jdk/src/windows/native/sun/windows/awt_Font.cpp | 5 +++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/jdk/src/windows/native/sun/windows/awt_Cursor.cpp b/jdk/src/windows/native/sun/windows/awt_Cursor.cpp index 477fe80ee93..7901601167f 100644 --- a/jdk/src/windows/native/sun/windows/awt_Cursor.cpp +++ b/jdk/src/windows/native/sun/windows/awt_Cursor.cpp @@ -391,9 +391,16 @@ Java_sun_awt_windows_WCustomCursor_createCursorIndirect( DASSERT(hCursor); - AwtCursor::setPData(self, ptr_to_jlong(new AwtCursor(env, hCursor, self, xHotSpot, - yHotSpot, nW, nH, nSS, cols, - (BYTE *)andMaskPtr))); + try { + AwtCursor::setPData(self, ptr_to_jlong(new AwtCursor(env, hCursor, self, xHotSpot, + yHotSpot, nW, nH, nSS, cols, + (BYTE *)andMaskPtr))); + } catch (...) { + if (cols) { + delete[] cols; + } + throw; + } CATCH_BAD_ALLOC; } diff --git a/jdk/src/windows/native/sun/windows/awt_Font.cpp b/jdk/src/windows/native/sun/windows/awt_Font.cpp index 185514c1972..d0d31ff0d07 100644 --- a/jdk/src/windows/native/sun/windows/awt_Font.cpp +++ b/jdk/src/windows/native/sun/windows/awt_Font.cpp @@ -510,6 +510,11 @@ void AwtFont::LoadMetrics(JNIEnv *env, jobject fontMetrics) jobject font = env->GetObjectField(fontMetrics, AwtFont::fontID); AwtFont* awtFont = AwtFont::GetFont(env, font); + if (!awtFont) { + /* failed to get font */ + return; + } + HDC hDC = ::GetDC(0); DASSERT(hDC != NULL);