From fe516a04d6fba5a6be8d697506452ff1e551a53a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Tue, 27 May 2025 06:47:47 +0200 Subject: [PATCH] Fixed: Frozing after closing SWF file caused by incorrect freeing memory --- .../flash/gui/taglistview/TagListTreeModel.java | 2 +- .../flash/gui/tagtree/AbstractTagTreeModel.java | 8 +++----- .../jpexs/decompiler/flash/gui/tagtree/TagTreeModel.java | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/com/jpexs/decompiler/flash/gui/taglistview/TagListTreeModel.java b/src/com/jpexs/decompiler/flash/gui/taglistview/TagListTreeModel.java index daec1e8ac..4f92e9266 100644 --- a/src/com/jpexs/decompiler/flash/gui/taglistview/TagListTreeModel.java +++ b/src/com/jpexs/decompiler/flash/gui/taglistview/TagListTreeModel.java @@ -275,7 +275,7 @@ public class TagListTreeModel extends AbstractTagTreeModel { for (SWF swf : toRemove) { swfHeaders.remove(swf); - removeFromCache(swf); + uncacheSwf(swf); } } diff --git a/src/com/jpexs/decompiler/flash/gui/tagtree/AbstractTagTreeModel.java b/src/com/jpexs/decompiler/flash/gui/tagtree/AbstractTagTreeModel.java index 3ac748d9c..1b06cfa0d 100644 --- a/src/com/jpexs/decompiler/flash/gui/tagtree/AbstractTagTreeModel.java +++ b/src/com/jpexs/decompiler/flash/gui/tagtree/AbstractTagTreeModel.java @@ -50,13 +50,11 @@ public abstract class AbstractTagTreeModel implements TreeModel { protected Map itemToParentCache = new WeakHashMap<>(); - protected void removeFromCache(TreeItem itemToRemove) { - itemToParentCache.remove(itemToRemove); + protected void uncacheSwf(SWF swf) { Set tSet = new HashSet<>(itemToParentCache.keySet()); for (TreeItem item : tSet) { - TreeItem parent = itemToParentCache.get(item); - if (parent == itemToRemove) { - removeFromCache(item); + if (item.getOpenable() == swf) { + itemToParentCache.remove(item); } } } diff --git a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeModel.java b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeModel.java index c4acea0e2..2f8fc3907 100644 --- a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeModel.java +++ b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeModel.java @@ -161,7 +161,7 @@ public class TagTreeModel extends AbstractTagTreeModel { for (SWF swf : toRemove) { swfInfos.remove(swf); - removeFromCache(swf); + uncacheSwf(swf); } }