From e4fbf314feca13c9a72275dc6f374d46e675c13c Mon Sep 17 00:00:00 2001 From: Catrope Date: Tue, 28 Aug 2012 12:35:27 -0700 Subject: [PATCH] Work around preg_replace_callback() issue in CSSJanus As reported in bug 38294, CSSJanus returns an empty string for some input. This seems to be caused by preg_replace_callback() returning null which, according to the PHP docs, happens "in case of error". Of course there's no way to figure out what the error was :S Work around this by checking for a null return value Change-Id: I5db952bc32f73b94ac13e449d9aa1f8693602dbd --- includes/libs/CSSJanus.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/includes/libs/CSSJanus.php b/includes/libs/CSSJanus.php index e6672b49ad..4ebbc49718 100644 --- a/includes/libs/CSSJanus.php +++ b/includes/libs/CSSJanus.php @@ -268,10 +268,17 @@ class CSSJanus { * @return string */ private static function fixBackgroundPosition( $css ) { - $css = preg_replace_callback( self::$patterns['bg_horizontal_percentage'], + $replaced = preg_replace_callback( self::$patterns['bg_horizontal_percentage'], array( 'self', 'calculateNewBackgroundPosition' ), $css ); - $css = preg_replace_callback( self::$patterns['bg_horizontal_percentage_x'], + if ( $replaced !== null ) { + // Check for null; sometimes preg_replace_callback() returns null here for some weird reason + $css = $replaced; + } + $replaced = preg_replace_callback( self::$patterns['bg_horizontal_percentage_x'], array( 'self', 'calculateNewBackgroundPosition' ), $css ); + if ( $replaced !== null ) { + $css = $replaced; + } return $css; } -- 2.20.1