From: Sara Golemon Date: Fri, 16 May 2003 23:24:55 +0000 (+0000) Subject: Bugfix 23654. If subject is an array and it contains other arrays, we want to pass... X-Git-Tag: BEFORE_FD_REVERT~59 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f026645177b97e2f8ed30025ec6d133b885a4f39;p=php Bugfix 23654. If subject is an array and it contains other arrays, we want to pass those subarrays through unchanged rather than attempt to convert them to string. --- diff --git a/ext/standard/string.c b/ext/standard/string.c index 97356ffc44..fff25c077e 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -2726,8 +2726,12 @@ PHP_FUNCTION(str_replace) /* For each subject entry, convert it to string, then perform replacement and add the result to the return_value array. */ while (zend_hash_get_current_data(Z_ARRVAL_PP(subject), (void **)&subject_entry) == SUCCESS) { - MAKE_STD_ZVAL(result); - php_str_replace_in_subject(*search, *replace, subject_entry, result); + if (Z_TYPE_PP(subject_entry) != IS_ARRAY && Z_TYPE_PP(subject_entry) != IS_OBJECT) { + MAKE_STD_ZVAL(result); + php_str_replace_in_subject(*search, *replace, subject_entry, result); + } else { + result = *subject_entry; + } /* Add to return array */ switch (zend_hash_get_current_key_ex(Z_ARRVAL_PP(subject), &string_key, &string_key_len, &num_key, 0, NULL)) {