diff --git a/platform/core-impl/src/com/intellij/openapi/editor/impl/CharArray.java b/platform/core-impl/src/com/intellij/openapi/editor/impl/CharArray.java index be82de1e06bd..62dc9d961071 100644 --- a/platform/core-impl/src/com/intellij/openapi/editor/impl/CharArray.java +++ b/platform/core-impl/src/com/intellij/openapi/editor/impl/CharArray.java @@ -19,7 +19,6 @@ import com.intellij.diagnostic.Dumpable; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.event.DocumentEvent; import com.intellij.openapi.util.text.StringUtil; -import com.intellij.util.ArrayUtil; import com.intellij.util.LocalTimeCounter; import com.intellij.util.text.CharArrayCharSequence; import com.intellij.util.text.CharArrayUtil; @@ -468,7 +467,7 @@ abstract class CharArray implements CharSequenceBackedByArray, Dumpable { try { flushDeferredChanged(); if (myOriginalSequence != null && myArray == null) { - myArray = array = ArrayUtil.realloc(CharArrayUtil.fromSequence(myOriginalSequence), myOriginalSequence.length()); + myArray = array = CharArrayUtil.fromSequence(myOriginalSequence); myStringRef = null; } } diff --git a/platform/core-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java b/platform/core-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java index 640c841feba7..7c046953b4a7 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java +++ b/platform/core-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java @@ -617,7 +617,7 @@ public abstract class PsiFileImpl extends ElementBase implements PsiFileEx, PsiF @Override @NotNull public char[] textToCharArray() { - return CharArrayUtil.fromSequenceStrict(getViewProvider().getContents()); + return CharArrayUtil.fromSequence(getViewProvider().getContents()); } @NotNull diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/LightPsiFileImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/source/LightPsiFileImpl.java index de7c965e89cf..7d25327c607e 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/LightPsiFileImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/LightPsiFileImpl.java @@ -258,7 +258,7 @@ public abstract class LightPsiFileImpl extends PsiElementBase implements PsiFile @Override @NotNull public char[] textToCharArray() { - return CharArrayUtil.fromSequenceStrict(getViewProvider().getContents()); + return CharArrayUtil.fromSequence(getViewProvider().getContents()); } @Override diff --git a/platform/util/src/com/intellij/util/text/CharArrayUtil.java b/platform/util/src/com/intellij/util/text/CharArrayUtil.java index 718a842ea731..24025774263b 100644 --- a/platform/util/src/com/intellij/util/text/CharArrayUtil.java +++ b/platform/util/src/com/intellij/util/text/CharArrayUtil.java @@ -99,13 +99,12 @@ public class CharArrayUtil { } } + /** + * @deprecated use {@link #fromSequence(CharSequence)} + */ @NotNull public static char[] fromSequenceStrict(@NotNull CharSequence seq) { - char[] chars = fromSequence(seq); - if (seq.length() == chars.length) return chars; - char[] strictChars = new char[seq.length()]; - System.arraycopy(chars, 0, strictChars, 0, seq.length()); - return strictChars; + return fromSequence(seq); } @Nullable @@ -126,7 +125,6 @@ public class CharArrayUtil { /** * @return the underlying char[] array if any, or the new chara array if not - * NOTE RETURNED ARRAY LENGTH MAY HAVE BE DIFFERENT FROM THE seq.length() */ @NotNull public static char[] fromSequence(@NotNull CharSequence seq) { @@ -155,6 +153,11 @@ public class CharArrayUtil { ((StringBuffer)seq).getChars(0, seq.length(), chars, 0); return chars; } + if (seq instanceof StringBuilder) { + char[] chars = new char[seq.length()]; + ((StringBuilder)seq).getChars(0, seq.length(), chars, 0); + return chars; + } if (seq instanceof String) { char[] chars = new char[seq.length()];