From bf977b55157afc3a24f198df487ebdb419c73960 Mon Sep 17 00:00:00 2001 From: Dmitry Semeniouta Date: Thu, 21 Feb 2013 14:36:34 +0400 Subject: [PATCH] Document -> DocumentFoldingInfo -> Project chain leak is fixed +review CR-IC --- .../folding/impl/CodeFoldingManagerImpl.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/CodeFoldingManagerImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/CodeFoldingManagerImpl.java index 10999a526730..103c033496c0 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/CodeFoldingManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/CodeFoldingManagerImpl.java @@ -57,7 +57,7 @@ public class CodeFoldingManagerImpl extends CodeFoldingManager implements Projec private final List myDocumentsWithFoldingInfo = new WeakList(); - private final Key FOLDING_INFO_IN_DOCUMENT_KEY = Key.create("FOLDING_INFO_IN_DOCUMENT_KEY"); + private final Key myFoldingInfoInDocumentKey = Key.create("FOLDING_INFO_IN_DOCUMENT_KEY"); private static final Key FOLDING_STATE_INFO_IN_DOCUMENT_KEY = Key.create("FOLDING_STATE_IN_DOCUMENT"); CodeFoldingManagerImpl(Project project) { @@ -83,7 +83,7 @@ public class CodeFoldingManagerImpl extends CodeFoldingManager implements Projec public void disposeComponent() { for (Document document : myDocumentsWithFoldingInfo) { if (document != null) { - document.putUserData(FOLDING_INFO_IN_DOCUMENT_KEY, null); + document.putUserData(myFoldingInfoInDocumentKey, null); } } } @@ -345,12 +345,14 @@ public class CodeFoldingManagerImpl extends CodeFoldingManager implements Projec @NotNull private DocumentFoldingInfo getDocumentFoldingInfo(@NotNull Document document) { - DocumentFoldingInfo info = document.getUserData(FOLDING_INFO_IN_DOCUMENT_KEY); + DocumentFoldingInfo info = document.getUserData(myFoldingInfoInDocumentKey); if (info == null) { info = new DocumentFoldingInfo(myProject, document); - DocumentFoldingInfo written = ((UserDataHolderEx)document).putUserDataIfAbsent(FOLDING_INFO_IN_DOCUMENT_KEY, info); - if (written != info) { + DocumentFoldingInfo written = ((UserDataHolderEx)document).putUserDataIfAbsent(myFoldingInfoInDocumentKey, info); + if (written == info) { myDocumentsWithFoldingInfo.add(document); + } + else { info = written; } }