summaryrefslogtreecommitdiff
path: root/java/openjdk6/files/icedtea/openjdk/6963811-deadlock_fix.patch
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2013-04-25 20:03:56 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2013-04-25 20:03:56 +0000
commit70c842246a7ffdd808630db4af137711eaa33346 (patch)
treefaaadf11511ea057e94e662bbf56a70751cbbbec /java/openjdk6/files/icedtea/openjdk/6963811-deadlock_fix.patch
parent- Update to 2.0.6 . (diff)
Add multiple security patches from IcedTea6 1.12.5.
http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2013-April/022985.html Obtained from: IcedTea Project
Diffstat (limited to 'java/openjdk6/files/icedtea/openjdk/6963811-deadlock_fix.patch')
-rw-r--r--java/openjdk6/files/icedtea/openjdk/6963811-deadlock_fix.patch42
1 files changed, 42 insertions, 0 deletions
diff --git a/java/openjdk6/files/icedtea/openjdk/6963811-deadlock_fix.patch b/java/openjdk6/files/icedtea/openjdk/6963811-deadlock_fix.patch
new file mode 100644
index 000000000000..50e4c6d7d67a
--- /dev/null
+++ b/java/openjdk6/files/icedtea/openjdk/6963811-deadlock_fix.patch
@@ -0,0 +1,42 @@
+# HG changeset patch
+# User andrew
+# Date 1365711839 -3600
+# Node ID df591e0dfd349dc5986cc17949939c588d5a9690
+# Parent 06255d9f82761abc74c30f31fda00968ffef4bc3
+6963811: Deadlock-prone locking changes in Introspector
+Reviewed-by: peterz, rupashka
+
+diff --git a/src/share/classes/java/beans/Introspector.java b/src/share/classes/java/beans/Introspector.java
+--- jdk/src/share/classes/java/beans/Introspector.java
++++ jdk/src/share/classes/java/beans/Introspector.java
+@@ -170,21 +170,24 @@
+ if (!ReflectUtil.isPackageAccessible(beanClass)) {
+ return (new Introspector(beanClass, null, USE_ALL_BEANINFO)).getBeanInfo();
+ }
++ WeakCache<Class<?>, BeanInfo> beanInfoCache;
++ BeanInfo beanInfo;
+ synchronized (BEANINFO_CACHE) {
+- WeakCache<Class<?>, BeanInfo> beanInfoCache =
+- (WeakCache<Class<?>, BeanInfo>) AppContext.getAppContext().get(BEANINFO_CACHE);
++ beanInfoCache = (WeakCache<Class<?>, BeanInfo>) AppContext.getAppContext().get(BEANINFO_CACHE);
+
+ if (beanInfoCache == null) {
+ beanInfoCache = new WeakCache<Class<?>, BeanInfo>();
+ AppContext.getAppContext().put(BEANINFO_CACHE, beanInfoCache);
+ }
+- BeanInfo beanInfo = beanInfoCache.get(beanClass);
+- if (beanInfo == null) {
+- beanInfo = (new Introspector(beanClass, null, USE_ALL_BEANINFO)).getBeanInfo();
++ beanInfo = beanInfoCache.get(beanClass);
++ }
++ if (beanInfo == null) {
++ beanInfo = (new Introspector(beanClass, null, USE_ALL_BEANINFO)).getBeanInfo();
++ synchronized (BEANINFO_CACHE) {
+ beanInfoCache.put(beanClass, beanInfo);
+ }
+- return beanInfo;
+ }
++ return beanInfo;
+ }
+
+ /**