changeset 4994:c5618ec76f11

7082294: nsk/regression/b4265661 crashes on windows Reviewed-by: uta
author bagiras
date Tue, 14 Feb 2012 13:31:41 +0400
parents be4792b3b94f
children 9af12571532f
files src/windows/native/sun/windows/awt_Font.cpp src/windows/native/sun/windows/awt_Toolkit.cpp
diffstat 2 files changed, 7 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/windows/native/sun/windows/awt_Font.cpp	Mon Feb 13 12:20:25 2012 -0800
+++ b/src/windows/native/sun/windows/awt_Font.cpp	Tue Feb 14 13:31:41 2012 +0400
@@ -150,6 +150,7 @@
 
 AwtFont::~AwtFont()
 {
+    delete[] m_hFont;
 }
 
 void AwtFont::Dispose() {
@@ -160,11 +161,12 @@
             /*  NOTE: delete of windows HFONT happens in FontCache::Remove
                       only when the final reference to the font is disposed */
         } else if (font != NULL) {
-         // if font was not in cache, its not shared and we delete it now
-           VERIFY(::DeleteObject(font));
+            // if font was not in cache, its not shared and we delete it now
+            DASSERT(::GetObjectType(font) == OBJ_FONT);
+            VERIFY(::DeleteObject(font));
         }
+        m_hFont[i] = NULL;
     }
-    delete[] m_hFont;
 
     AwtObject::Dispose();
 }
--- a/src/windows/native/sun/windows/awt_Toolkit.cpp	Mon Feb 13 12:20:25 2012 -0800
+++ b/src/windows/native/sun/windows/awt_Toolkit.cpp	Tue Feb 14 13:31:41 2012 +0400
@@ -534,7 +534,6 @@
     D3DInitializer::GetInstance().Clean();
 
     AwtObjectList::Cleanup();
-    AwtFont::Cleanup();
 
     awt_dnd_uninitialize();
     awt_clipboard_uninitialize((JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2));
@@ -554,6 +553,8 @@
         ::DispatchMessage(&msg);
     }
 
+    AwtFont::Cleanup();
+
     HWND toolkitHWndToDestroy = tk.m_toolkitHWnd;
     tk.m_toolkitHWnd = 0;
     VERIFY(::DestroyWindow(toolkitHWndToDestroy) != NULL);