X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2FHooks.php;h=980d350c6b9864edeaa3a13b72ac5728cc1ad729;hb=cc8439be9d7760104c640e861a4226678032694b;hp=a4145624361bae15acfe032b0d31467ad27b2023;hpb=8ab188a92d22d4561112c6464face4abfb25e62f;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Hooks.php b/includes/Hooks.php index a414562436..980d350c6b 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -232,8 +232,11 @@ class Hooks { /** * Handle PHP errors issued inside a hook. Catch errors that have to do - * with a function expecting a reference, and pass all others through to - * MWExceptionHandler::handleError() for default processing. + * with a function expecting a reference, missing arguments, or wrong argument + * types. Pass all others through to to the default error handler. + * + * This is useful for throwing errors for major callback invocation errors + * (with regard to parameter signature) which PHP just gives warnings for. * * @since 1.18 * @@ -243,13 +246,14 @@ class Hooks { * @return bool */ public static function hookErrorHandler( $errno, $errstr ) { - if ( strpos( $errstr, 'expected to be a reference, value given' ) !== false ) { + if ( strpos( $errstr, 'expected to be a reference, value given' ) !== false + || strpos( $errstr, 'Missing argument ' ) !== false + || strpos( $errstr, ' expects parameter ' ) !== false + ) { throw new MWHookException( $errstr, $errno ); } - // Delegate unhandled errors to the default MW handler - return call_user_func_array( - 'MWExceptionHandler::handleError', func_get_args() - ); + // Delegate unhandled errors to the default handlers + return false; } }