If you are looking for the decompiler itself, visit https://github.com/jindrapetrik/jpexs-decompiler
NEW : We have got a new blog where we post some interesting SWF internals info.
List of issues#1126 AS3 decompiled with wrong setter and illegal break statement
Author: devbn
Date created:
Type: bug
Visibility: Everybody
Assigned to:
Labels: AS3Decompilation
State: closed
> What steps will reproduce the problem?
1. Extract the simplegraph.swf file attached.
2. Visit source of class com.ibm.ilog.elixir.diagram.graphlayout.GraphLayout
> What is the expected output? What do you see instead?
EXPECTED: the setter _2010579132linkConnectionBoxProvider should be something like this:
private function set
_2010579132linkConnectionBoxProvider(value:ILinkConnectionBoxProvider) : void
{
if(!this.supportsLinkConnectionBox())
{
LogResUtil.logAndThrowRuntimeExc(GraphLayout,"graphlayout.expert.message.6031E");
}
if(value != this._linkConnectionBoxInterface)
{
this._linkConnectionBoxInterface = value;
this.onParameterChanged("LinkConnectionBoxInterface",value);
}
}
ACTUAL:
private function set
_2010579132linkConnectionBoxProvider(param1:ILinkConnectionBoxProvider) : void
{
LogResUtil.logAndThrowRuntimeExc(GraphLayout,"graphlayout.expert.message.6031E");
if(param1 != this._linkConnectionBoxInterface)
{
this._linkConnectionBoxInterface = param1;
this.onParameterChanged("LinkConnectionBoxInterface",param1);
}
}
==> This setter always throw error, but the original is not.
> What version of the product are you using? Is it "nightly build"? Which operating system
do you have?
This bug can reproduce in both ffdec_7.1.1 and ffdec_7.1.2_nightly1169
> Please provide any additional information below. If the problem is related to a SWF
file, attach it here, otherwise we can't help you.
See attachment
simplegraph.swf (1,166 KiB)
More problem:
At the last line of method function performNonRecursiveLayout(), there's a bug:
EXPECTED: the last line must be:
return _layoutReport;
ACTUAL:
break loop1;
supportsLinkConnectionBox returns constant false, so the expresion will be always true.
Deobfuscation removes the if statement, because the condition is always true. So the
deompilation is correct.
Please turn off deobfuscation if you want to see the if statement.
2nd is a bug.
OK, I unchecked the deofuscation option and the output is correct.
For the 2nd problem, should I create a new separate issue?
No, this issue is ok.
Hi honfika
Is there any update for this issue?
Hi,
No, I'm not working on decompilation issues. It will be fixed by JPEXS later.
Hi @jpexs, could you pls spent time to check the problem of the
performNonRecursiveLayout() has an illegal break label I mentioned above?
Decompilation of try..finally block is pretty hard to implement.
finally clause uses switch internally when there are throw/return statements somewhere in
the body.
In this case, there are two nested finally blocks which makes it more complicated.
To be honest - I thank a god it displays at least something now!
But yes it's bug and needs to be fixed. I am too tired right now. Maybe during weekend I
could have a look, but can't promise anything, sorry.
Thank you very much JPEXS.
Unfortunately, situation in my job is a bit critical so I go home really exhausted and I
don't have a mood during weekends to even sit to the computer and think or even start
Netbeans - I need to relax - visit some events with animals, exhibitions, concerts,
somewhere where there's no need to brain, etc. I admit it.
Sometimes it's better. I can't really promise any dates when this will be fixed :-(. I am
trying to at least answer questions on Issue tracker or reply somewhere - it's not much to
think. Or server upgrades. I think anybody understands. The decompiler is opensource,
anybody can (at least try to) fix it or help.
I don't think it is now (after flash shutdown) even relevant, but after many years, this
seems to be fixed in latest nightly build. Last time I said I rather spend weekend on
events like exhibitions/concerts... so now its covid time, everybody sits home... :-D.
State: new→upgraded
State: upgraded→closed