List of issuesList of issues

#105 Infinite loops
Author: user pepka
Date created:
Type: bug
Visibility: Everybody
Assigned to:
Labels: AS3Decompilation
State: closed Help

> What steps will reproduce the problem? If statment with an empty body inside of the loop leads to strange decompilation in the attached sample. > What is the expected output? What do you see instead? do { if (!(var1.x + var1.y <= param1)) { } var2--; } while (var2 >= 0); is decompiled as do { if(var1.x+var1.y>param1) { } var2--; if(var2<0) { } else { continue; } } while(true); Actually I saw such a pattern before and it still persists - if(var2<0) { } else { continue; } is wrapped into infinite loop instead of if(var2<0) { break; } which would be still not exact decompilation but could at least save the program's behaviour. See also another example in attachment - double_break.swf. > What version of the product are you using? On what operating system? 1.6.0u1
Downloadempty_if.swf (1 KiB)DownloadMain.as (1 KiB)Downloaddouble_break.swf (1 KiB)DownloadMain.as (1 KiB)
admin
State: new→opened
admin
version 1.6.1 was released. This should be fixed.
State: opened→upgraded
user
Hi, now for empty_if.swf it become more wierd: if(!isNaN(param1)) { while(if(var1.x+var1.y>param1) { }, var2--, var2>=0) { } } And for double_break.swf just persists.
admin
State: upgraded→opened
admin
Version 1.6.2 was released. Loop detection algorithm is completely new, so the loop problems should be history, try it.
State: opened→upgraded
user
Hi, these two have gone! 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