From e9aaaa7e56e6cf8b5e5975416635e5ece47f46a9 Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Fri, 12 Nov 2010 21:23:27 +0300 Subject: [PATCH] Yet another victim of .substring() holds original string buffer. --- .../openapi/vfs/newvfs/impl/VirtualDirectoryImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/impl/VirtualDirectoryImpl.java b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/impl/VirtualDirectoryImpl.java index 2eb9959be9f9..471f96894c78 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/impl/VirtualDirectoryImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/impl/VirtualDirectoryImpl.java @@ -103,8 +103,9 @@ public class VirtualDirectoryImpl extends VirtualFileSystemEntry { // do not extract getId from under the synchronized block since it will cause a concurrency problem. int id = ourPersistence.getId(this, name); if (id > 0) { - NewVirtualFile child = createChild(name, id); - map.put(name, child); + final String shorty = new String(name); + NewVirtualFile child = createChild(shorty, id); // So we don't hold whole char[] buffer of a lengthy path + map.put(shorty, child); return child; } }