diff options
author | Jung-uk Kim <jkim@FreeBSD.org> | 2013-04-25 20:03:56 +0000 |
---|---|---|
committer | Jung-uk Kim <jkim@FreeBSD.org> | 2013-04-25 20:03:56 +0000 |
commit | 70c842246a7ffdd808630db4af137711eaa33346 (patch) | |
tree | faaadf11511ea057e94e662bbf56a70751cbbbec /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.patch | 42 |
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; + } + + /** |