From bb21daaa8dc41de569bb12f9390dfe5e25d96b7d Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Mon, 1 Apr 2019 14:20:13 +0300 Subject: [PATCH] editor: remove memory leak via EditorGutterAction --- .../editor/impl/EditorGutterComponentImpl.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterComponentImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterComponentImpl.java index c25dc9bf7475..59fc0ac1deb1 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterComponentImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterComponentImpl.java @@ -1676,12 +1676,10 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse else { TextAnnotationGutterProvider provider = getProviderAtPoint(e.getPoint()); if (provider != null) { - if (myProviderToListener.containsKey(provider)) { - EditorGutterAction action = myProviderToListener.get(provider); - if (action != null) { - int line = getLineNumAtPoint(e.getPoint()); - cursor = action.getCursor(line); - } + EditorGutterAction action = myProviderToListener.get(provider); + if (action != null) { + int line = getLineNumAtPoint(e.getPoint()); + cursor = action.getCursor(line); } } } @@ -1722,13 +1720,13 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse return; } - if (myProviderToListener.containsKey(provider)) { + EditorGutterAction action = myProviderToListener.get(provider); + if (action != null) { int line = getLineNumAtPoint(clickPoint); if (line >= 0 && line < myEditor.getDocument().getLineCount() && UIUtil.isActionClick(e, MouseEvent.MOUSE_RELEASED)) { - myProviderToListener.get(provider).doAction(line); + action.doAction(line); } - } } } @@ -1879,6 +1877,7 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse provider.gutterClosed(); myTextAnnotationGutters.remove(i); myTextAnnotationGutterSizes.remove(i); + myProviderToListener.remove(provider); } }