diff --git a/CHANGELOG.md b/CHANGELOG.md index e8c2139f9..af63c2aea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ All notable changes to this project will be documented in this file. - [#1863] Export to PDF - cannot read fonts with long CMAP - Go to document class when switched to tag list view - Copy/Move with dependencies order of tags +- [#1865] ConcurrentModificationException on SWF close ## [16.2.0] - 2022-11-08 ### Added @@ -2549,6 +2550,7 @@ All notable changes to this project will be documented in this file. [#1701]: https://www.free-decompiler.com/flash/issues/1701 [#1864]: https://www.free-decompiler.com/flash/issues/1864 [#1863]: https://www.free-decompiler.com/flash/issues/1863 +[#1865]: https://www.free-decompiler.com/flash/issues/1865 [#1414]: https://www.free-decompiler.com/flash/issues/1414 [#1755]: https://www.free-decompiler.com/flash/issues/1755 [#1460]: https://www.free-decompiler.com/flash/issues/1460 diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ButtonTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ButtonTag.java index aabe7d313..9269778f9 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ButtonTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ButtonTag.java @@ -108,6 +108,9 @@ public abstract class ButtonTag extends DrawableTag implements Timelined { } public DefineButtonSoundTag getSounds() { + if (swf == null) { + return null; + } return (DefineButtonSoundTag) swf.getCharacterIdTag(getCharacterId(), DefineButtonSoundTag.ID); } diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 11ca29416..57bd09b88 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -4942,7 +4942,8 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se } private static void calculateMissingNeededCharacters(Map> missingNeededCharacters, Timelined tim) { - for (Tag t : tim.getTags()) { + List tags = tim.getTags().toArrayList(); + for (Tag t : tags) { missingNeededCharacters.put(t, t.getMissingNeededCharacters()); if (t instanceof DefineSpriteTag) { calculateMissingNeededCharacters(missingNeededCharacters, (DefineSpriteTag) t);