From ad89404a5b9d2942ae5697cfd1e2bcec289dcc84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Thu, 4 Mar 2021 20:22:54 +0100 Subject: [PATCH] Fixed: AS3 direct editation - slot/const default values --- CHANGELOG.md | 1 + .../parser/script/AVM2SourceGenerator.java | 9 +++++---- .../methodinfo_parser/MethodInfoParser.java | 19 ++++++++++--------- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea51d7b0e..29e72036a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ All notable changes to this project will be documented in this file. - Flash viewer- cyclic DefineSprite usage - #1570 Incorrect shape rendering when edge is reversed - #1643 Separate AS1/2 and AS3 editor hilighting +- AS3 direct editation - slot/const default values ### Removed - #1631 ActiveX Flash component download in windows installer diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java index 907fa5b1f..51d89f155 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java @@ -2057,9 +2057,9 @@ public class AVM2SourceGenerator implements SourceGenerator { if (val instanceof BooleanAVM2Item) { BooleanAVM2Item bi = (BooleanAVM2Item) val; if (bi.value) { - return new ValueKind(0, ValueKind.CONSTANT_True); + return new ValueKind(ValueKind.CONSTANT_True, ValueKind.CONSTANT_True); } else { - return new ValueKind(0, ValueKind.CONSTANT_False); + return new ValueKind(ValueKind.CONSTANT_False, ValueKind.CONSTANT_False); } } @@ -2092,10 +2092,10 @@ public class AVM2SourceGenerator implements SourceGenerator { return new ValueKind(abcIndex.getSelectedAbc().constants.getDoubleId(Double.NaN, true), ValueKind.CONSTANT_Double); } if (val instanceof NullAVM2Item) { - return new ValueKind(0, ValueKind.CONSTANT_Null); + return new ValueKind(ValueKind.CONSTANT_Null, ValueKind.CONSTANT_Null); } if (val instanceof UndefinedAVM2Item) { - return new ValueKind(0, ValueKind.CONSTANT_Undefined); + return new ValueKind(ValueKind.CONSTANT_Undefined, ValueKind.CONSTANT_Undefined); } return null; } @@ -2386,6 +2386,7 @@ public class AVM2SourceGenerator implements SourceGenerator { ValueKind vk = getValueKind(namespace, type, val); if (vk == null) { + tsc.value_index = ValueKind.CONSTANT_Undefined; tsc.value_kind = ValueKind.CONSTANT_Undefined; } else { tsc.value_kind = vk.value_kind; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/methodinfo_parser/MethodInfoParser.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/methodinfo_parser/MethodInfoParser.java index 75531d5e1..dbe28d996 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/methodinfo_parser/MethodInfoParser.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/methodinfo_parser/MethodInfoParser.java @@ -12,7 +12,8 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.abc.methodinfo_parser; import com.jpexs.decompiler.flash.abc.ABC; @@ -70,16 +71,16 @@ public class MethodInfoParser { value = new ValueKind(abc.constants.getStringId((String) symbValue.value, true), ValueKind.CONSTANT_Utf8); break; case ParsedSymbol.TYPE_TRUE: - value = new ValueKind(0, ValueKind.CONSTANT_True); + value = new ValueKind(ValueKind.CONSTANT_True, ValueKind.CONSTANT_True); break; case ParsedSymbol.TYPE_FALSE: - value = new ValueKind(0, ValueKind.CONSTANT_False); + value = new ValueKind(ValueKind.CONSTANT_False, ValueKind.CONSTANT_False); break; case ParsedSymbol.TYPE_NULL: - value = new ValueKind(0, ValueKind.CONSTANT_Null); + value = new ValueKind(ValueKind.CONSTANT_Null, ValueKind.CONSTANT_Null); break; case ParsedSymbol.TYPE_UNDEFINED: - value = new ValueKind(0, ValueKind.CONSTANT_Undefined); + value = new ValueKind(ValueKind.CONSTANT_Undefined, ValueKind.CONSTANT_Undefined); break; case ParsedSymbol.TYPE_NAMESPACE: if (nstype.equals("9:")) { @@ -208,16 +209,16 @@ public class MethodInfoParser { optionalValues.add(new ValueKind(abc.constants.getStringId((String) symbValue.value, true), ValueKind.CONSTANT_Utf8)); break; case ParsedSymbol.TYPE_TRUE: - optionalValues.add(new ValueKind(0, ValueKind.CONSTANT_True)); + optionalValues.add(new ValueKind(ValueKind.CONSTANT_True, ValueKind.CONSTANT_True)); break; case ParsedSymbol.TYPE_FALSE: - optionalValues.add(new ValueKind(0, ValueKind.CONSTANT_False)); + optionalValues.add(new ValueKind(ValueKind.CONSTANT_False, ValueKind.CONSTANT_False)); break; case ParsedSymbol.TYPE_NULL: - optionalValues.add(new ValueKind(0, ValueKind.CONSTANT_Null)); + optionalValues.add(new ValueKind(ValueKind.CONSTANT_Null, ValueKind.CONSTANT_Null)); break; case ParsedSymbol.TYPE_UNDEFINED: - optionalValues.add(new ValueKind(0, ValueKind.CONSTANT_Undefined)); + optionalValues.add(new ValueKind(ValueKind.CONSTANT_Undefined, ValueKind.CONSTANT_Undefined)); break; case ParsedSymbol.TYPE_NAMESPACE: if (nstype.equals("9:")) {