Blob Blame History Raw
# HG changeset patch
# User vkarnauk
# Date 1340286118 -14400
#      Thu Jun 21 17:41:58 2012 +0400
# Node ID f71b6117fd7bbb13ed4c1f68ace873695edd49cb
# Parent  762ae4a20c8b115e5cb486c5204d8bdee747ee59
7027300: Unsynchronized HashMap access causes endless loop
Reviewed-by: bae, prr

diff -r 762ae4a20c8b -r f71b6117fd7b src/share/classes/sun/font/SunLayoutEngine.java
--- openjdk/jdk/src/share/classes/sun/font/SunLayoutEngine.java	Thu Jun 21 14:19:12 2012 +0400
+++ openjdk/jdk/src/share/classes/sun/font/SunLayoutEngine.java	Thu Jun 21 17:41:58 2012 +0400
@@ -33,7 +33,7 @@
 import sun.font.GlyphLayout.*;
 import java.awt.geom.Point2D;
 import java.lang.ref.SoftReference;
-import java.util.HashMap;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.Locale;
 
 /*
@@ -129,9 +129,9 @@
 
   // !!! don't need this unless we have more than one sun layout engine...
     public LayoutEngine getEngine(LayoutEngineKey key) {
-        HashMap cache = (HashMap)cacheref.get();
+        ConcurrentHashMap cache = (ConcurrentHashMap)cacheref.get();
         if (cache == null) {
-            cache = new HashMap();
+            cache = new ConcurrentHashMap();
             cacheref = new SoftReference(cache);
         }
 
# HG changeset patch
# User prr
# Date 1342804653 25200
#      Fri Jul 20 10:17:33 2012 -0700
# Node ID 84d5cdbe7bce2caf907ec842ac7b4fa2097fb295
# Parent  bf5bf37108c14d1d01b8a1043f9e3ff0e3727869
7183251: Netbeans editor renders text wrong on JDK 7u6 build
Reviewed-by: igor, jgodinez

diff -r bf5bf37108c1 -r 84d5cdbe7bce src/share/classes/sun/font/SunLayoutEngine.java
--- openjdk/jdk/src/share/classes/sun/font/SunLayoutEngine.java	Fri Jul 20 13:58:52 2012 +0400
+++ openjdk/jdk/src/share/classes/sun/font/SunLayoutEngine.java	Fri Jul 20 10:17:33 2012 -0700
@@ -137,8 +137,9 @@
 
         LayoutEngine e = (LayoutEngine)cache.get(key);
         if (e == null) {
-            e = new SunLayoutEngine(key.copy());
-            cache.put(key, e);
+            LayoutEngineKey copy = key.copy();
+            e = new SunLayoutEngine(copy);
+            cache.put(copy, e);
         }
         return e;
     }