WordPress.org

Make WordPress Core

Ticket #14429: faster-is_serialized.diff

File faster-is_serialized.diff, 1.0 KB (added by sambauers, 9 years ago)
  • wp-includes/functions.php

     
    232232        if ( !is_string( $data ) )
    233233                return false;
    234234        $data = trim( $data );
     235        if ( empty($data) )
     236                return false;
    235237        if ( 'N;' == $data )
    236238                return true;
    237         if ( !preg_match( '/^([adObis]):/', $data, $badions ) )
     239        if ( ':' !== substr( $data, 1, 1 ) )
    238240                return false;
    239         switch ( $badions[1] ) {
     241        $badion = substr( $data, 0, 1 );
     242        if ( !in_array( $badion, array( 'a', 'd', 'O', 'b', 'i', 's' ) ) )
     243                return false;
     244        switch ( $badion ) {
    240245                case 'a' :
    241246                case 'O' :
    242247                case 's' :
    243                         if ( preg_match( "/^{$badions[1]}:[0-9]+:.*[;}]\$/s", $data ) )
     248                        if ( preg_match( "/^{$badion}:[0-9]+:.*[;}]\$/s", $data ) )
    244249                                return true;
    245250                        break;
    246251                case 'b' :
    247252                case 'i' :
    248253                case 'd' :
    249                         if ( preg_match( "/^{$badions[1]}:[0-9.E-]+;\$/", $data ) )
     254                        if ( preg_match( "/^{$badion}:[0-9.E-]+;\$/", $data ) )
    250255                                return true;
    251256                        break;
    252257        }