Throw an exception if LuaSandboxFunction::call returns false

If LuaSandboxFunction::call returns false, it's an error on PHP's part.
Throw a "real" exception so that we can see what's causing it in server
logs.

Bug: 71045
Change-Id: I7185e186d3e0af6e467b73ea1ef13417ca96b088
This commit is contained in:
Jackmcbarn 2014-09-27 14:07:11 -04:00
parent 011610e770
commit 9270d30c50

View file

@ -276,7 +276,15 @@ class Scribunto_LuaSandboxInterpreter extends Scribunto_LuaInterpreter {
$args = func_get_args();
$func = array_shift( $args );
try {
return call_user_func_array( array( $func, 'call' ), $args );
$ret = call_user_func_array( array( $func, 'call' ), $args );
if ( $ret === false ) {
// Per the documentation on LuaSandboxFunction::call, a return value
// of false means that something went wrong and it's PHP's fault,
// so throw a "real" exception.
throw new MWException(
__METHOD__ . ': LuaSandboxFunction::call returned false' );
}
return $ret;
} catch ( LuaSandboxTimeoutError $e ) {
throw $this->engine->newException( 'scribunto-common-timeout' );
} catch ( LuaSandboxError $e ) {