[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] [bug #46131] Gnash's `ExternalInterface.call()` did not c
From: |
Nutchanon Wetchasit |
Subject: |
[Gnash-commit] [bug #46131] Gnash's `ExternalInterface.call()` did not correctly pass return value from JavaScript function |
Date: |
Thu, 08 Oct 2015 06:37:35 +0000 |
User-agent: |
Mozilla/5.0 (X11; Linux i686; rv:25.5) Gecko/20150606 Firefox/31.9 PaleMoon/25.5.0 |
Follow-up Comment #2, bug #46131 (project gnash):
Also, this issue will get really messy if the SWF tried to use
`ExternalInterface.call()` _multiple times in row_, as leftover return values
from early calls will be mistakenly taken as result of later calls.
I have created a variant of test Flash file (using MTASC) that calls a
JavaScript function which returns an english reading of the number passed
as an argument. The function is called 20 times in a row to demonstrate
the problem. See the attached `flash2js-multi.zip`.
Following is a trace log from `flash2js-multi.html` on browser with Adobe
Flash Player:
Warning: Reference to undeclared variable, 'MultiFlash2JS'
flash2js-multi: 1: OK: JavaScript function correctly returned "one"
flash2js-multi: 2: OK: JavaScript function correctly returned "two"
flash2js-multi: 3: OK: JavaScript function correctly returned "three"
flash2js-multi: 4: OK: JavaScript function correctly returned "four"
flash2js-multi: 5: OK: JavaScript function correctly returned "five"
flash2js-multi: 6: OK: JavaScript function correctly returned "six"
flash2js-multi: 7: OK: JavaScript function correctly returned "seven"
flash2js-multi: 8: OK: JavaScript function correctly returned "eight"
flash2js-multi: 9: OK: JavaScript function correctly returned "nine"
flash2js-multi: 10: OK: JavaScript function correctly returned "ten"
flash2js-multi: 11: OK: JavaScript function correctly returned "eleven"
flash2js-multi: 12: OK: JavaScript function correctly returned "twelve"
flash2js-multi: 13: OK: JavaScript function correctly returned "thirteen"
flash2js-multi: 14: OK: JavaScript function correctly returned "fourteen"
flash2js-multi: 15: OK: JavaScript function correctly returned "fifteen"
flash2js-multi: 16: OK: JavaScript function correctly returned "sixteen"
flash2js-multi: 17: OK: JavaScript function correctly returned "seventeen"
flash2js-multi: 18: OK: JavaScript function correctly returned "eighteen"
flash2js-multi: 19: OK: JavaScript function correctly returned "nineteen"
flash2js-multi: 20: OK: JavaScript function correctly returned "twenty"
You'll see that all return values are passed back to ActionScript correctly.
Following is a trace log from `flash2js-multi.html` on browser with Gnash:
60 ACTIONSCRIPT ERROR: reference to non-existent variable 'MultiFlash2JS'
61 TRACE: flash2js-multi: 1: failed: expected return value "one" got
"undefined"
61 TRACE: flash2js-multi: 2: failed: expected return value "two" got
"undefined"
61 TRACE: flash2js-multi: 3: failed: expected return value "three" got
"undefined"
61 TRACE: flash2js-multi: 4: failed: expected return value "four" got
"undefined"
61 TRACE: flash2js-multi: 5: failed: expected return value "five" got
"undefined"
62 TRACE: flash2js-multi: 6: failed: expected return value "six" got
"undefined"
62 TRACE: flash2js-multi: 7: failed: expected return value "seven" got "one"
62 TRACE: flash2js-multi: 8: failed: expected return value "eight" got "two"
62 TRACE: flash2js-multi: 9: failed: expected return value "nine" got "three"
62 TRACE: flash2js-multi: 10: failed: expected return value "ten" got "four"
62 TRACE: flash2js-multi: 11: failed: expected return value "eleven" got
"undefined"
63 TRACE: flash2js-multi: 12: failed: expected return value "twelve" got
"undefined"
63 TRACE: flash2js-multi: 13: failed: expected return value "thirteen" got
"five"
63 TRACE: flash2js-multi: 14: failed: expected return value "fourteen" got
"six"
63 TRACE: flash2js-multi: 15: failed: expected return value "fifteen" got
"seven"
63 TRACE: flash2js-multi: 16: failed: expected return value "sixteen" got
"eight"
64 TRACE: flash2js-multi: 17: failed: expected return value "seventeen" got
"nine"
64 TRACE: flash2js-multi: 18: failed: expected return value "eighteen" got
"undefined"
64 TRACE: flash2js-multi: 19: failed: expected return value "nineteen" got
"undefined"
64 TRACE: flash2js-multi: 20: failed: expected return value "twenty" got
"ten"
You'll see that return value of earlier ExternalInterface calls got mixed up
with later ones.
Screenshots, text output, full debug logs (verbosity 2 + action error log),
and container-player communication logs are also attached in the same ZIP
file.
Gnash: 0.8.11dev (git f0f66ce 23-Sep-2015) NPAPI
Flash Player: 11.2.202.491 NPAPI binary
Browser: Iceweasel 10.0.12 (debian)
System: Debian GNU/Linux 7.0 Wheezy i386
(file #35099)
_______________________________________________________
Additional Item Attachment:
File name: flash2js-multi.zip Size:9 KB
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/bugs/?46131>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/