From a2607aca6be54e935eca8d0ca70de9c874b093d3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Gerg=C5=91=20Tisza?= Date: Thu, 29 Oct 2015 16:03:15 -0700 Subject: [PATCH] Log warnings on on preg_* failures in MagicWordArray::matchAndRemove() Softer version of I3840a56adc0a6e50963b930051892491f8e90245. Bug: T115514 Change-Id: Idb297a31b17928a0151476879294eedfbec0d744 --- includes/MagicWord.php | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/includes/MagicWord.php b/includes/MagicWord.php index 2c7ba91bf2..80e60d2a34 100644 --- a/includes/MagicWord.php +++ b/includes/MagicWord.php @@ -23,6 +23,8 @@ * @ingroup Parser */ +use MediaWiki\Logger\LoggerFactory; + /** * This class encapsulates "magic words" such as "#redirect", __NOTOC__, etc. * @@ -951,13 +953,28 @@ class MagicWordArray { continue; } $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 ) { list( $name, $param ) = $this->parseMatch( $m ); $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; } -- 2.20.1