From b95708008828ae1a8f03540bd0a179479d043160 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Tue, 28 Aug 2012 14:59:39 +0400 Subject: [PATCH] shrink empty CharBuffer during compression --- .../src/com/intellij/util/CompressionUtil.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/util/CompressionUtil.java b/platform/platform-impl/src/com/intellij/util/CompressionUtil.java index e2405552588c..a06bf7b8c9d4 100644 --- a/platform/platform-impl/src/com/intellij/util/CompressionUtil.java +++ b/platform/platform-impl/src/com/intellij/util/CompressionUtil.java @@ -24,6 +24,7 @@ import java.io.DataOutput; import java.io.IOException; import java.lang.ref.SoftReference; import java.lang.reflect.Field; +import java.nio.CharBuffer; import java.nio.charset.Charset; /** @@ -94,7 +95,12 @@ public class CompressionUtil { } public static Object compressCharSequence(CharSequence string) { - if (!ourCanUseSnappy || string.length() < STRING_COMPRESSION_THRESHOLD) return string; + if (!ourCanUseSnappy || string.length() < STRING_COMPRESSION_THRESHOLD) { + if (string instanceof CharBuffer && ((CharBuffer)string).capacity() > STRING_COMPRESSION_THRESHOLD) { + string = string.toString(); // shrink to size + } + return string; + } try { return Snappy.compress(string.toString(), Charset.defaultCharset()); } catch (IOException ex) {