gnash-commit
[Top][All Lists]
Advanced

[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/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]