From 29d021ae3ce11dacd0793f08524651a23468a06d Mon Sep 17 00:00:00 2001 From: Christoph Dreis Date: Tue, 23 Apr 2019 18:09:05 +0200 Subject: [PATCH] Avoid possible memory leak in ResolvableType --- .../org/springframework/core/ResolvableType.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/core/ResolvableType.java b/spring-core/src/main/java/org/springframework/core/ResolvableType.java index 83b00f96753b..8276a41d31c0 100644 --- a/spring-core/src/main/java/org/springframework/core/ResolvableType.java +++ b/spring-core/src/main/java/org/springframework/core/ResolvableType.java @@ -935,7 +935,7 @@ VariableResolver asVariableResolver() { if (this == NONE) { return null; } - return new DefaultVariableResolver(); + return new DefaultVariableResolver(this); } /** @@ -1452,17 +1452,23 @@ interface VariableResolver extends Serializable { @SuppressWarnings("serial") - private class DefaultVariableResolver implements VariableResolver { + private static class DefaultVariableResolver implements VariableResolver { + + private final ResolvableType source; + + DefaultVariableResolver(ResolvableType resolvableType) { + this.source = resolvableType; + } @Override @Nullable public ResolvableType resolveVariable(TypeVariable variable) { - return ResolvableType.this.resolveVariable(variable); + return this.source.resolveVariable(variable); } @Override public Object getSource() { - return ResolvableType.this; + return this.source; } }