From 4906c59a2c6c56a3ebd357f5444ed4d1e727b0aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 15 Jan 2023 18:57:41 +0100 Subject: [PATCH] Fixed #1938 AS3 Direct editation - local registers coerce/convert --- CHANGELOG.md | 1 + .../flash/abc/avm2/parser/script/NameAVM2Item.java | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 31f70cc85..c5d849385 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ All notable changes to this project will be documented in this file. - [#1842] AS - Do not display §§dup when the value has no sideeffect - Deobfuscation icon on script toolbar did not match the deobfuscation status - [#1938] AS3 Direct editation - implied this instead of findprop +- [#1938] AS3 Direct editation - local registers coerce/convert ## [18.3.2] - 2023-01-10 ### Removed diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NameAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NameAVM2Item.java index 639329789..8c9a3c02f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NameAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NameAVM2Item.java @@ -214,6 +214,9 @@ public class NameAVM2Item extends AssignableAVM2Item { case "uint": ins = ins(AVM2Instructions.ConvertU); break; + case "Number": + ins = ins(AVM2Instructions.ConvertD); + break; default: int type_index = AVM2SourceGenerator.resolveType(localData, ttype, ((AVM2SourceGenerator) generator).abcIndex); ins = ins(AVM2Instructions.Coerce, type_index); @@ -254,7 +257,7 @@ public class NameAVM2Item extends AssignableAVM2Item { killTemp(localData, generator, Arrays.asList(ret_temp))); } else { - return toSourceMerge(localData, generator, assignedValue, !(("" + assignedValue.returnType()).equals("" + type) && (basicTypes.contains("" + type))) ? generateCoerce(localData, generator, type) : null, needsReturn + return toSourceMerge(localData, generator, assignedValue, generateCoerce(localData, generator, type), needsReturn ? ins(AVM2Instructions.Dup) : null, generateSetLoc(regNumber)); } } else {