Fixed #1951 Clearing Namespace/Multiname cache after renaming identifiers

This commit is contained in:
Jindra Petřík
2023-01-27 18:51:14 +01:00
parent ae1a300fb3
commit 4a5cef7a3a
3 changed files with 15 additions and 1 deletions

View File

@@ -11,6 +11,7 @@ All notable changes to this project will be documented in this file.
- [#1941] Export when no node is selected after SWF opening
- Exception handling in cache clearing thread
- DottedChain.PathPart NoSerializable exception
- [#1951] Clearing Namespace/Multiname cache after renaming identifiers
## [18.3.3] - 2023-01-22
### Added
@@ -2913,9 +2914,10 @@ All notable changes to this project will be documented in this file.
[alpha 9]: https://github.com/jindrapetrik/jpexs-decompiler/compare/alpha8...alpha9
[alpha 8]: https://github.com/jindrapetrik/jpexs-decompiler/compare/alpha7...alpha8
[alpha 7]: https://github.com/jindrapetrik/jpexs-decompiler/releases/tag/alpha7
[#1029]: https://www.free-decompiler.com/flash/issues/1029
[#1948]: https://www.free-decompiler.com/flash/issues/1948
[#1941]: https://www.free-decompiler.com/flash/issues/1941
[#1029]: https://www.free-decompiler.com/flash/issues/1029
[#1951]: https://www.free-decompiler.com/flash/issues/1951
[#1913]: https://www.free-decompiler.com/flash/issues/1913
[#1888]: https://www.free-decompiler.com/flash/issues/1888
[#1894]: https://www.free-decompiler.com/flash/issues/1894

View File

@@ -2695,12 +2695,16 @@ public final class SWF implements SWFContainerItem, Timelined, Openable {
for (Tag tag : getTags()) {
if (tag instanceof ABCContainerTag) {
((ABCContainerTag) tag).getABC().deobfuscateIdentifiers(deobfuscated, renameType, true);
((ABCContainerTag) tag).getABC().constants.clearCachedMultinames();
((ABCContainerTag) tag).getABC().constants.clearCachedDottedChains();
tag.setModified(true);
}
}
for (Tag tag : getTags()) {
if (tag instanceof ABCContainerTag) {
((ABCContainerTag) tag).getABC().deobfuscateIdentifiers(deobfuscated, renameType, false);
((ABCContainerTag) tag).getABC().constants.clearCachedMultinames();
((ABCContainerTag) tag).getABC().constants.clearCachedDottedChains();
tag.setModified(true);
}
}

View File

@@ -101,6 +101,14 @@ public class AVM2ConstantPool implements Cloneable {
multinameWithNamespaceCache.put(multiName, multinameWithNamespace);
}
public void clearCachedMultinames() {
multinameWithNamespaceCache.clear();
}
public void clearCachedDottedChains() {
dottedChainCache.clear();
}
private void ensureDefault(List<?> list) {
if (list.isEmpty()) {
list.add(null);