From 06721ba6c0cebc94c16a60d84b832a4d4ef67479 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 26 Feb 2025 10:24:24 +0100 Subject: [PATCH] Lenient fallback when cached WeakReference returns null Closes gh-34423 --- .../cglib/core/AbstractClassGenerator.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/cglib/core/AbstractClassGenerator.java b/spring-core/src/main/java/org/springframework/cglib/core/AbstractClassGenerator.java index 2d1ff69e839a..98d292264a81 100644 --- a/spring-core/src/main/java/org/springframework/cglib/core/AbstractClassGenerator.java +++ b/spring-core/src/main/java/org/springframework/cglib/core/AbstractClassGenerator.java @@ -123,13 +123,17 @@ public Predicate getUniqueNamePredicate() { } public Object get(AbstractClassGenerator gen, boolean useCache) { - if (!useCache) { - return gen.generate(ClassLoaderData.this); - } - else { + // SPRING PATCH BEGIN + Object value = null; + if (useCache) { Object cachedValue = generatedClasses.get(gen); - return gen.unwrapCachedValue(cachedValue); + value = gen.unwrapCachedValue(cachedValue); } + if (value == null) { // fallback when cached WeakReference returns null + value = gen.generate(ClassLoaderData.this); + } + return value; + // SPRING PATCH END } }