changeset 7839:c5db3ec83cba

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
author pchelko
date Wed, 14 Aug 2013 16:17:28 +0400
parents 149bf2400fa1
children 1d6ce0070fd3
files src/windows/native/sun/windows/awt_Cursor.cpp src/windows/native/sun/windows/awt_Font.cpp
diffstat 2 files changed, 15 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/windows/native/sun/windows/awt_Cursor.cpp	Tue Aug 13 15:49:37 2013 -0700
+++ b/src/windows/native/sun/windows/awt_Cursor.cpp	Wed Aug 14 16:17:28 2013 +0400
@@ -391,9 +391,16 @@
 
     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;
 }
 
--- a/src/windows/native/sun/windows/awt_Font.cpp	Tue Aug 13 15:49:37 2013 -0700
+++ b/src/windows/native/sun/windows/awt_Font.cpp	Wed Aug 14 16:17:28 2013 +0400
@@ -510,6 +510,11 @@
     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);