JPEXS Free Flash Decompiler Issue Tracker

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 issuesList of issues

#1807 Error #1064, maybe related to constructprop vs callproperty?
Date created:
Type: bug
Visibility: Everybody
Assigned to:
State: closed Help

> What steps will reproduce the problem? I decompiled the Vex 3 swf and went to the Main script and added a space somewhere and saved. > What is the expected output? What do you see instead? The function unlockAchievement (line 2018) has the following P-code (excerpt): getlocal3 findpropstrict QName(PackageNamespace("flash.utils"),"getDefinitionByName") getlocal 4 callproperty QName(PackageNamespace("flash.utils"),"getDefinitionByName"), 1 construct 0 After modifying the file it changes to: getlocal3 findpropstrict QName(PackageNamespace("flash.utils"),"getDefinitionByName") getlocal 4 constructprop QName(PackageNamespace("flash.utils"),"getDefinitionByName"), 1 getglobalscope call 0 The debugger shows an error where those pieces of code are located and flash shows me Error #1064. Using the P-code editor I can replace the entire new "code" section with the old code section and it doesn't result in that problem anymore, maybe I should try replacing portions of P-code. Sadly, it always reverts after another edit. > What version of the product are you using? Is it "nightly build"? Which operating system do you have? I'm using the official version 15.1.0 on Win7. > Please provide any additional information below. If the problem is related to a SWF file, attach it here, otherwise we can't help you. Attached the file, but if it helps, here's the function causing the problems: private function unlockAchievement(param1:int) : void { var _loc2_:Array = achievementsLog["achievement" + param1]; trace("Achievement " + param1 + " unlocked! - create window"); var _loc3_:* = new achievementUnlocked(); _loc3_.x = 640 + _loc3_.width; _loc3_.y = 100 + 100 * achievementUnlocked.achievementUnlocks; _loc3_.achievementName.text = _loc2_[0]; addChild(_loc3_); adjustColour.colourChange(_loc3_.bgColours,this.getColour(this.level)[0],this.getColour(th is.level)[1],this.getColour(this.level)[2],this.getColour(this.level)[3]); var _loc4_:* = "achievement" + param1 + "Button"; _loc3_.icon = new getDefinitionByName(_loc4_)(); _loc3_.icon.x = 31; _loc3_.icon.y = 43; _loc3_.addChild(_loc3_.icon); API.unlockMedal(_loc2_[0]); this.saveGame(); } Also, is there a way to make certain functions unmodifyable?
user
Oh, forgot to mention that _loc3_.icon = new getDefinitionByName(_loc4_)() is the line that causes problems.
user
Sorry for posting this in an incomplete state, but I just replaced the new snippet with the old snippet instead of replacing the entire code sections and that fixes it, too. So that really seems to be the problem.
admin
In nightly 2217 I added parenthesis around that getDefinitionName, like: _loc3_.icon = new (getDefinitionByName(_loc4_))(); with it it compiles properly.
State: new→upgraded
admin
State: upgraded→closed