Fixed: AS1/2 debugger not getting variable details properly

Added: AS debugger - DontDelete variable flag (0x2)
This commit is contained in:
Jindra Petřík
2024-08-03 18:58:13 +02:00
parent d7cb9c1cff
commit 53f1cb89f6
3 changed files with 10 additions and 2 deletions

View File

@@ -44,6 +44,7 @@ All notable changes to this project will be documented in this file.
- Exe export mode can be selected in in Save EXE dialog (select filetype) - wrapper or projectors
- Optimized (faster) context menu for large SWF trees
- Optimized (faster) deleting items for large SWF trees
- AS debugger - DontDelete variable flag (0x2)
### Fixed
- Debugger - getting children of top level variables
@@ -92,6 +93,7 @@ All notable changes to this project will be documented in this file.
- [#2226] Incorrect decompilation of continue statements in some cases
- AS3 Embedded assets export - assets.swf not working, incorrect binary data extension for swfs
- Duplicate pack path message on compound scripts
- AS1/2 debugger not getting variable details properly
### Changed
- [#2185] MochiCrypt no longer offered for auto decrypt, user needs to choose variant from "Use unpacker" menu

Binary file not shown.

View File

@@ -364,7 +364,9 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<Scr
boolean useGetter = (var.flags & VariableFlags.IS_CONST) == 0;
if (parentObjectId == 0 && objectId != 0L) {
boolean isAS3 = (Main.getMainFrame().getPanel().getCurrentSwf().isAS3());
if (parentObjectId == 0 && objectId != 0L && isAS3) {
igv = Main.getDebugHandler().getVariable(objectId, "", true, useGetter);
} else {
igv = Main.getDebugHandler().getVariable(parentObjectId, var.name, true, useGetter);
@@ -578,7 +580,6 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<Scr
private String flagsToString(int flags) {
Integer[] unknownFlags = new Integer[]{
2,
8,
16,
64,
@@ -597,6 +598,11 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<Scr
if ((flags & VariableFlags.DONT_ENUMERATE) > 0) {
flagsStr.add("dontEnumerate");
}
if ((flags & VariableFlags.DONT_DELETE) > 0) {
flagsStr.add("dontDelete");
}
for (Integer f : unknownFlags) {
if ((flags & f) > 0) {
flagsStr.add("unk" + f);