--- a/jdk/src/windows/native/sun/windows/awt_Font.cpp Thu Oct 25 09:55:33 2012 +0400
+++ b/jdk/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/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp Thu Oct 25 09:55:33 2012 +0400
+++ b/jdk/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);