gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] [bug #47004] Gnash didn't pass string return value "Error


From: Nutchanon Wetchasit
Subject: [Gnash-commit] [bug #47004] Gnash didn't pass string return value "Error" and "SecurityError" from ExternalInterface callback
Date: Sat, 20 Feb 2016 03:43:20 +0000
User-agent: Opera/9.80 (Windows NT 5.1; U; en) Presto/2.9.168 Version/11.51

Follow-up Comment #11, bug #47004 (project gnash):

This is text output from `js2flash-errorstring.html` on browser with current
Gnash:

Flash's error_call() returned type string, value: Error
Flash's securityerror_call() returned type string, value: SecurityError
Flash's hello_call() returned type string, value: Hello!


Gnash's debug output (verbosity 1) from the run:

98 SECURITY: Extensions disabled
98 UNIMPLEMENTED: FileAttributes tag in the SWF requests that network access
is not granted to this movie (or application?) when loaded from the
filesystem. Anyway Gnash won't care; use white/black listing in your .gnashrc
instead
99 TRACE: callee: finished initializing
2950 TRACE: callee: error_call callback invoked
2951 ERROR: Couldn't process ExternalInterface Call error_call
2961 TRACE: callee: securityerror_call callback invoked
2961 ERROR: Couldn't process ExternalInterface Call securityerror_call
2971 TRACE: callee: hello_call callback invoked


You'd see that the value returned to JavaScript is now correct, but there are
some odd "ERROR: Couldn't process ExternalInterface Call..." messages
appearing in the debug output.

This could be narrowed down to Gnash (player)'s ExternalInterface callback
handling code function `movie_root::processInvoke()` in
`libcore/movie_root.cpp` around line 1683
<http://git.savannah.gnu.org/cgit/gnash.git/tree/libcore/movie_root.cpp?id=051aa9c34b69e1a0a1d2d75e3cf1db07fcea4006#n1683>:

        std::string result = callExternalCallback(invoke->name,
invoke->args);
        if (result == ExternalInterface::makeString("Error")) {
            return false;
        } else if (result == ExternalInterface::makeString("SecurityError"))
{
            return false;
        }
        return true;


This flags legitimate "Error" and "SecurityError" string return value from
callback as error and returned `false` from the `movie_root::processInvoke()`
function, triggering error message
<http://git.savannah.gnu.org/cgit/gnash.git/tree/libcore/movie_root.cpp?id=051aa9c34b69e1a0a1d2d75e3cf1db07fcea4006#n1558>.

This doesn't affect return value seen from JavaScript as
`movie_root::callExternalCallback()` already sent it to host container
<http://git.savannah.gnu.org/cgit/gnash.git/tree/libcore/movie_root.cpp?id=051aa9c34b69e1a0a1d2d75e3cf1db07fcea4006#n1979>.

Gnash: 0.8.11dev (git 051aa9c 15-Feb-2016) NPAPI
Browser: Iceweasel 10.0.12 (debian)
System: Debian GNU/Linux 7.0 Wheezy i386


    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?47004>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/




reply via email to

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