Work around preg_replace_callback() issue in CSSJanus
authorCatrope <roan.kattouw@gmail.com>
Tue, 28 Aug 2012 19:35:27 +0000 (12:35 -0700)
committerCatrope <roan.kattouw@gmail.com>
Tue, 28 Aug 2012 19:35:27 +0000 (12:35 -0700)
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

index e6672b4..4ebbc49 100644 (file)
@@ -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;
        }