Make WordPress Core

Ticket #47698: 47698-patch-1-remove-array_replace_recursive-polyfill.patch

File 47698-patch-1-remove-array_replace_recursive-polyfill.patch, 2.4 KB (added by jrf, 5 years ago)
  • src/wp-includes/compat.php

    From ee9f4d91a8453fc96b90902ab670f23196031c35 Mon Sep 17 00:00:00 2001
    From: jrfnl <jrfnl@users.noreply.github.com>
    Date: Fri, 12 Jul 2019 06:14:27 +0200
    Subject: [PATCH] Remove array_replace_recursive() polyfill
    
    ---
     src/wp-includes/compat.php | 53 --------------------------------------
     1 file changed, 53 deletions(-)
    
    diff --git a/src/wp-includes/compat.php b/src/wp-includes/compat.php
    index 92eaba7417..1df248f890 100644
    a b if ( ! function_exists( 'sodium_crypto_box' ) ) { 
    323323        require ABSPATH . WPINC . '/sodium_compat/autoload.php';
    324324}
    325325
    326 if ( ! function_exists( 'array_replace_recursive' ) ) :
    327         /**
    328          * PHP-agnostic version of {@link array_replace_recursive()}.
    329          *
    330          * The array_replace_recursive() function is a PHP 5.3 function. WordPress
    331          * currently supports down to PHP 5.2, so this method is a workaround
    332          * for PHP 5.2.
    333          *
    334          * Note: array_replace_recursive() supports infinite arguments, but for our use-
    335          * case, we only need to support two arguments.
    336          *
    337          * Subject to removal once WordPress makes PHP 5.3.0 the minimum requirement.
    338          *
    339          * @since 4.5.3
    340          *
    341          * @see https://secure.php.net/manual/en/function.array-replace-recursive.php#109390
    342          *
    343          * @param  array $base         Array with keys needing to be replaced.
    344          * @param  array $replacements Array with the replaced keys.
    345          *
    346          * @return array
    347          */
    348         function array_replace_recursive( $base = array(), $replacements = array() ) {
    349                 foreach ( array_slice( func_get_args(), 1 ) as $replacements ) {
    350                         $bref_stack = array( &$base );
    351                         $head_stack = array( $replacements );
    352 
    353                         do {
    354                                 end( $bref_stack );
    355 
    356                                 $bref = &$bref_stack[ key( $bref_stack ) ];
    357                                 $head = array_pop( $head_stack );
    358 
    359                                 unset( $bref_stack[ key( $bref_stack ) ] );
    360 
    361                                 foreach ( array_keys( $head ) as $key ) {
    362                                         if ( isset( $key, $bref ) &&
    363                                                 isset( $bref[ $key ] ) && is_array( $bref[ $key ] ) &&
    364                                                 isset( $head[ $key ] ) && is_array( $head[ $key ] ) ) {
    365 
    366                                                 $bref_stack[] = &$bref[ $key ];
    367                                                 $head_stack[] = $head[ $key ];
    368                                         } else {
    369                                                 $bref[ $key ] = $head[ $key ];
    370                                         }
    371                                 }
    372                         } while ( count( $head_stack ) );
    373                 }
    374 
    375                 return $base;
    376         }
    377 endif;
    378 
    379326/**
    380327 * Polyfill for the SPL autoloader. In PHP 5.2 (but not 5.3 and later), SPL can
    381328 * be disabled, and PHP 7.2 raises notices if the compiler finds an __autoload()