Fixed #1772 AS1/2 decompilation - StackOverflow during getVariables function

This commit is contained in:
Jindra Petřík
2022-12-31 15:03:03 +01:00
parent 505013207b
commit 7a4bec0d98
3 changed files with 6 additions and 1 deletions

View File

@@ -16,6 +16,7 @@ All notable changes to this project will be documented in this file.
- Uncompressed FLA (XFL) export creates a directory
- [#1827] Video replacing VP6 reading
- [#1926] Constructors namespace taken from class - should be always public
- [#1772] AS1/2 decompilation - StackOverflow during getVariables function
### Changed
- [#1913] SVG export/import of shapes - shape exact position (bounds) is retained
@@ -2832,6 +2833,7 @@ All notable changes to this project will be documented in this file.
[#1923]: https://www.free-decompiler.com/flash/issues/1923
[#1827]: https://www.free-decompiler.com/flash/issues/1827
[#1926]: https://www.free-decompiler.com/flash/issues/1926
[#1772]: https://www.free-decompiler.com/flash/issues/1772
[#1922]: https://www.free-decompiler.com/flash/issues/1922
[#1921]: https://www.free-decompiler.com/flash/issues/1921
[#1917]: https://www.free-decompiler.com/flash/issues/1917

View File

@@ -999,7 +999,7 @@ public abstract class Action implements GraphSourceItem {
}
private static HashMap<String, GraphTargetItem> prepareVariables(GraphSourceItemContainer cnt, HashMap<String, GraphTargetItem> variables) {
HashMap<String, GraphTargetItem> variables2 = Helper.deepCopy(variables);
HashMap<String, GraphTargetItem> variables2 = new LinkedHashMap<>(variables);
if (cnt instanceof ActionDefineFunction || cnt instanceof ActionDefineFunction2) {
for (int r = 0; r < 256; r++) {
if (variables2.containsKey("__register" + r)) {

View File

@@ -660,7 +660,10 @@ public class Helper {
} catch (IOException | ClassNotFoundException ex) {
Logger.getLogger(Helper.class.getName()).log(Level.SEVERE, "Copy error", ex);
return null;
} catch (StackOverflowError se) {
throw new StackOverflowError("Stack overflow in deepcopy");
}
}
public static List<Object> toList(Object... rest) {