Skip to content

Commit 8886fd0

Browse files
committed
Release data buffer even when String decoding fails
Closes gh-35614 Signed-off-by: Marius Lichtblau <marius@lichtblau.io>
1 parent edc14c2 commit 8886fd0

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

spring-core/src/main/java/org/springframework/core/codec/AbstractCharSequenceDecoder.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -175,14 +175,18 @@ private Collection<DataBuffer> processDataBuffer(DataBuffer buffer, DataBufferUt
175175
public final T decode(DataBuffer dataBuffer, ResolvableType elementType,
176176
@Nullable MimeType mimeType, @Nullable Map<String, Object> hints) {
177177

178-
Charset charset = getCharset(mimeType);
179-
T value = decodeInternal(dataBuffer, charset);
180-
DataBufferUtils.release(dataBuffer);
181-
LogFormatUtils.traceDebug(logger, traceOn -> {
182-
String formatted = LogFormatUtils.formatValue(value, !traceOn);
183-
return Hints.getLogPrefix(hints) + "Decoded " + formatted;
184-
});
185-
return value;
178+
try {
179+
Charset charset = getCharset(mimeType);
180+
T value = decodeInternal(dataBuffer, charset);
181+
LogFormatUtils.traceDebug(logger, traceOn -> {
182+
String formatted = LogFormatUtils.formatValue(value, !traceOn);
183+
return Hints.getLogPrefix(hints) + "Decoded " + formatted;
184+
});
185+
return value;
186+
}
187+
finally {
188+
DataBufferUtils.release(dataBuffer);
189+
}
186190
}
187191

188192
private Charset getCharset(@Nullable MimeType mimeType) {

0 commit comments

Comments
 (0)