If you are looking for the decompiler itself, visit https://github.com/jindrapetrik/jpexs-decompiler
: The issue tracker is now writable again and logged users can download files too. But note that our support is very LIMITED.

#1807 Error #1064, maybe related to constructprop vs callproperty?
Author:
NoobTracker

Date created:
Type: bug
Visibility: Everybody
Assigned to:
State: new 

> 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?

Oh, forgot to mention that _loc3_.icon = new getDefinitionByName(_loc4_)() is the line
that causes problems.
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.