Avoid byte array copy in getContentAsString
The getContentAsString method was originally added ind9b8826to avoid the extra copying inherent to calling ByteArrayOutputStream.toByteArray; however, inf83c609the class was updated to instead use FastByteArrayOutputStream, and in the process the extra copy was brought back when getContentAsString was changed to call toByteArray. Switch to calling toByteArrayUnsafe, a method provided by FastByteArrayOutputStream, which avoids the extra copy; since we immediately pass the byte array to the String constructor, and it isn't accessed anywhere else, the usage is safe. See gh-31731
This commit is contained in:
parent
6ea9fdbf77
commit
e452c2e89c
|
|
@ -205,7 +205,7 @@ public class ContentCachingRequestWrapper extends HttpServletRequestWrapper {
|
|||
* @see #getContentAsByteArray()
|
||||
*/
|
||||
public String getContentAsString() {
|
||||
return new String(this.cachedContent.toByteArray(), Charset.forName(getCharacterEncoding()));
|
||||
return new String(this.cachedContent.toByteArrayUnsafe(), Charset.forName(getCharacterEncoding()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue