changeset 6036:9fb5db444365

7082294: nsk/regression/b4265661 crashes on windows Reviewed-by: art, anthony
author bagiras
date Thu, 25 Oct 2012 19:50:30 +0400
parents c27efe7615f8
children 7ead109417f0
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	Thu Oct 25 09:55:33 2012 +0400
+++ b/src/windows/native/sun/windows/awt_Font.cpp	Thu Oct 25 19:50:30 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	Thu Oct 25 09:55:33 2012 +0400
+++ b/src/windows/native/sun/windows/awt_Toolkit.cpp	Thu Oct 25 19:50:30 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);