diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/internal/DefaultSWTFontRegistry.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/internal/DefaultSWTFontRegistry.java index 0fc8367019b..ba47b8ce771 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/internal/DefaultSWTFontRegistry.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/internal/DefaultSWTFontRegistry.java @@ -72,7 +72,8 @@ public Font getFont(FontData fontData, int zoom) { } private Font registerFont(FontData fontData, Font font) { - fontsMap.put(fontData, font); + FontData clonedFontData = new FontData(fontData.toString()); + fontsMap.put(clonedFontData, font); return font; } diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/internal/ScalingSWTFontRegistry.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/internal/ScalingSWTFontRegistry.java index 21b4a38a1bd..435a7ddb934 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/internal/ScalingSWTFontRegistry.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/internal/ScalingSWTFontRegistry.java @@ -130,8 +130,9 @@ public Font getFont(FontData fontData, int zoom) { if (customFontsKeyMap.containsKey(fontData)) { container = customFontsKeyMap.get(fontData); } else { - container = new ScaledCustomFontContainer(fontData); - customFontsKeyMap.put(fontData, container); + FontData clonedFontData = new FontData(fontData.toString()); + container = new ScaledCustomFontContainer(clonedFontData); + customFontsKeyMap.put(clonedFontData, container); } return container.getScaledFont(zoom); } diff --git a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_graphics_FontData.java b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_graphics_FontData.java index d5f1b1181b5..41d5d5a2225 100644 --- a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_graphics_FontData.java +++ b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_graphics_FontData.java @@ -45,6 +45,7 @@ public void test_ConstructorLjava_lang_String() { FontData fd = new FontData(SwtTestUtil.testFontName, 10, SWT.NORMAL); FontData reconstructedFontData = new FontData(fd.toString()); assertEquals(fd, reconstructedFontData); + assertEquals(fd.hashCode(), reconstructedFontData.hashCode()); } @Test