List of issuesList of issues

#104 AS3: inc/dec loc NullpointerException, Multiple conditions in loops
Author: user pepka
Date created:
Type: bug
Visibility: Everybody
Assigned to:
Labels: AS3Decompilation
State: closed Help

> What steps will reproduce the problem? Decompilation of a given example causes the following error: ???? 30, 2013 5:26:01 PM com.jpexs.decompiler.flash.abc.types.MethodBody toString SEVERE: Error during remove traps java.lang.NullPointerException at com.jpexs.decompiler.flash.graph.BinaryOpItem.isCompileTime(BinaryOpItem.java:70) ... meanwile producing a quite valid result (please see below). > What is the expected output? What do you see instead? do { if (var1.x+var1.y>0&&param1<0) { break; } ... } while(true) source code (see also as file attached) leads to the improper for for(;!(var1.x+var1.y>0&&param1<0);continue loop0) { if(var1.x>0) { param1--; if(param1<0) { return param2; } } else { param1++; if(param1>100) { return param2; } } meanwhile the source code of the form (with a simple single condition) do { if (var1.x+var1.y>0) { break; } ... } while(true) produces more proper decompilation while(var1.x+var1.y<0) { ... } > What version of the product are you using? On what operating system? 1.6.0u1
admin
State: new→opened
admin
Title: NullPointerException→AS3: inc/dec loc NullpointerException, Multiple conditions in loops
admin
version 1.6.1 was released. Both issues should be fixed.
State: opened→upgraded
user
Hi, there is no more NullPointerExceptions, thanks! But decompilation is still not very precise. And sorry that I have accidently attached project file instead of AS source. Here is it. And the most recent example too.
DownloadMain.as (1 KiB)Downloadinfiniteloops.swf (1 KiB)
admin
State: upgraded→opened
admin
Version 1.6.2 was released. New loop detection algorithm should solve this, try it.
State: opened→upgraded
user
Hi, the loop is ok, but still missing one if in else clause: while(!(var1.x+var1.y>0&&param1<0)) { if(var1.x>0) { param1--; if(param1<0) { return param2; } } else { param1++; if(param1>100) <= this one { <= return param2; <= } <= } }
admin
State: upgraded→opened
admin
version 1.6.3 released it should be ok now, try it
State: opened→upgraded
user
Now it's fixed. Thanks!
admin
State: upgraded→closed
 
Google Translate: Translate to Czech Translate to Slovak Translate to Russian Translate to Hungarian Translate to Swedish Translate to French Translate to German Translate to Spanish Translate to Italian
Change style: oceanic classic