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.

#1270 convert_i: adding extra cast with each save
Author:
koen

Date created:
Type: bug
Visibility: Everybody
Assigned to:
Labels: AS3Direct Editation
State: closed 

> What steps will reproduce the problem?
Have a trait with a convert_i statement. Initial script does not show any cast statement.
Then after each save of the ActionScript, an extra cast is added to the statement:
int(int(int(int(int(int(int(int(int(int(int(int(int(objects.getTick() +
_loc4_)))))))))))));
findpropstrict Qname(PackageNamespace(""),"int")
findpropstrict Qname(PackageNamespace(""),"int")
findpropstrict Qname(PackageNamespace(""),"int")
findpropstrict Qname(PackageNamespace(""),"int")
findpropstrict Qname(PackageNamespace(""),"int")
findpropstrict Qname(PackageNamespace(""),"int")
findpropstrict Qname(PackageNamespace(""),"int")
findpropstrict Qname(PackageNamespace(""),"int")
findpropstrict Qname(PackageNamespace(""),"int")
findpropstrict Qname(PackageNamespace(""),"int")
findpropstrict Qname(PackageNamespace(""),"int")
findpropstrict Qname(PackageNamespace(""),"int")
getlex Qname(ProtectedNamespace("namespace"),"objects")
callproperty Multiname("getTick",[very_long_namespace_array]) 0
getlocal 4
add
callproperty Qname(PackageNamespace(""),"int") 1
callproperty Qname(PackageNamespace(""),"int") 1
callproperty Qname(PackageNamespace(""),"int") 1
callproperty Qname(PackageNamespace(""),"int") 1
callproperty Qname(PackageNamespace(""),"int") 1
callproperty Qname(PackageNamespace(""),"int") 1
callproperty Qname(PackageNamespace(""),"int") 1
callproperty Qname(PackageNamespace(""),"int") 1
callproperty Qname(PackageNamespace(""),"int") 1
callproperty Qname(PackageNamespace(""),"int") 1
callproperty Qname(PackageNamespace(""),"int") 1
callproperty Qname(PackageNamespace(""),"int") 1
convert_i
setproperty Qname(PrivateNamespace("namespace"),"property")
> What is the expected output? What do you see instead?
I can imagine the output will be different when saving the first time, but the result
should be the same when saving multiple times (without making changes). I noticed the
convert_i was in the original script, but did not appear in the ActionScript. The first
cast appears after saving for the first time. The cast is not needed, it assigns an int
value to an int property.
> What version of the product are you using? Is it "nightly build"? Which operating system
do you have?
9.0.0 build 1501
> Please provide any additional information below. If the problem is related to a SWF
file, attach it here, otherwise we can't help you.
Update: there is no initial convert_i for this statement in the original SWF. It looks
like the problem is related to "very_long_namespace_array" (enumerates 9 namespaces).
Initial it was short:
getlex Qname(ProtectedNamespace("namespace"),"objects")
callproperty Qname(PackageNamespace(""),"getTick") 0
getlocal 4
add
I need sample SWF file.
I tried to reproduce it with P-code you supplied but without success.
I can report this as well. The source I'm looking at is the Gemcraft source code (any
version). Recompilation of the Main module, or just about any other module, will add new
int(), Boolean() or Number() casts at each compile. Not all numbers seem to be affected,
but most are; so far, I've only seen it with numbers, though. I haven't noticed any
pattern to when it does/doesn't, but I haven't looked all that hard.
Sorry, meant to say Gemcraft Chasing Shadows.
This is fixed in version 14.0.0
State: new→upgraded
State: upgraded→closed