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#2297 Branching Optimization Bug When Saving
Author: Thisguy248
Date created:
Type: bug
Visibility: Everybody
Assigned to:
Labels: AS1/2AS3Direct Editation
State: closed
> What steps will reproduce the problem?
download the attached swf, go to simulation.entities and Entity_Thwomp, press Edit
ActionScript, add nothing (press spacebar somewhere) and press save
> What is the expected output?
Line 135 original code
if(this.isHorizontal) {
if(Math.abs(_loc8_) < _loc9_) {
...
}
}
else if(Math.abs(_loc7_) < _loc9_) {
...
}
> What do you see instead?
The else if gets converted to just an if, so it ignores the this.isHorizontal condition
> What version of the product are you using? Is it "nightly build"? Which operating system
do you have?
It affects 21.0.4, 20.1.0, 17.0.4 and earlier
> Please provide any additional information below.
Other examples:
Line 2172 of editor/Editor.as
Note: I had to downgrade from 21.0.4 to 20.1.0 because there was a different error when
trying to edit and save
if(_loc7_.y < 0) {
if(_loc8_.Len() > _loc7_.x) {
continue;
}
}
else if(Math.abs(_loc8_.x) > _loc7_.x || Math.abs(_loc8_.y) > _loc7_.y) {
continue;
}
_loc3_ = _loc4_;
The bottom else if gets converted to
if(!(Math.abs(_loc8_.x) > _loc7_.x || Math.abs(_loc8_.y) > _loc7_.y)) {
_loc3_ = _loc4_;
}
This ignores the _loc7_.y < 0 condition
Next example
Under simualtion.entities/Entity_Drone_Chaser line 117
if(_loc12_) {
_loc14_ = param1.GetGridCoordinateFromWorldspace_1D(pos.x);
_loc15_ = param1.GetGridCoordinateFromWorldspace_1D(pos.y);
_loc16_ = param1.SweepHorizontal(_loc15_,_loc15_,_loc14_,_loc13_);
if((_loc17_ = param1.GetGridCoordinateFromWorldspace_1D(_loc6_.x)) <
Math.min(_loc14_,_loc16_) || _loc17_ > Math.max(_loc14_,_loc16_)) {
continue;
}
}
else {
_loc18_ = param1.GetGridCoordinateFromWorldspace_1D(pos.y);
_loc19_ = param1.GetGridCoordinateFromWorldspace_1D(pos.x);
_loc20_ = param1.SweepVertical(_loc19_,_loc19_,_loc18_,_loc13_);
if((_loc21_ = param1.GetGridCoordinateFromWorldspace_1D(_loc6_.y)) <
Math.min(_loc18_,_loc20_) || _loc21_ > Math.max(_loc18_,_loc20_)) {
continue;
}
}
if(ChooseNextDirAndGoal_HELPER_TestDir(param1,_loc8_,next_goal)) {
...
}
The bottom else gets converted to
_loc18_ = param1.GetGridCoordinateFromWorldspace_1D(pos.y);
_loc19_ = param1.GetGridCoordinateFromWorldspace_1D(pos.x);
_loc20_ = param1.SweepVertical(_loc19_,_loc19_,_loc18_,_loc13_);
if(!((_loc21_ = param1.GetGridCoordinateFromWorldspace_1D(_loc6_.y)) <
Math.min(_loc18_,_loc20_) || _loc21_ > Math.max(_loc18_,_loc20_))) {
if(ChooseNextDirAndGoal_HELPER_TestDir(param1,_loc8_,next_goal)) {
...
}
}
This ignores the _loc12_ condition
Nv2.swf (552 KiB)
This is fixed in nightly 2899.
State: new→upgraded
Looks good, thanks!
You're welcome.
State: upgraded→closed