Log warnings on on preg_* failures in MagicWordArray::matchAndRemove()

Softer version of I3840a56adc0a6e50963b930051892491f8e90245.

Bug: T115514
Change-Id: Idb297a31b17928a0151476879294eedfbec0d744
This commit is contained in:
Gergő Tisza 2015-10-29 16:03:15 -07:00
parent f1f680b180
commit a2607aca6b

View file

@ -23,6 +23,8 @@
* @ingroup Parser * @ingroup Parser
*/ */
use MediaWiki\Logger\LoggerFactory;
/** /**
* This class encapsulates "magic words" such as "#redirect", __NOTOC__, etc. * This class encapsulates "magic words" such as "#redirect", __NOTOC__, etc.
* *
@ -951,13 +953,28 @@ class MagicWordArray {
continue; continue;
} }
$matches = array(); $matches = array();
if ( preg_match_all( $regex, $text, $matches, PREG_SET_ORDER ) ) { $res = preg_match_all( $regex, $text, $matches, PREG_SET_ORDER );
if ( $res === false ) {
LoggerFactory::getInstance( 'parser' )->warning( 'preg_match_all returned false', array(
'code' => preg_last_error(),
'regex' => $regex,
'text' => $text,
) );
} elseif ( $res ) {
foreach ( $matches as $m ) { foreach ( $matches as $m ) {
list( $name, $param ) = $this->parseMatch( $m ); list( $name, $param ) = $this->parseMatch( $m );
$found[$name] = $param; $found[$name] = $param;
} }
} }
$text = preg_replace( $regex, '', $text ); $res = preg_replace( $regex, '', $text );
if ( $res === null ) {
LoggerFactory::getInstance( 'parser' )->warning( 'preg_replace returned null', array(
'code' => preg_last_error(),
'regex' => $regex,
'text' => $text,
) );
}
$text = $res;
} }
return $found; return $found;
} }