from_idx = len_idx = repl_idx = 0;
- ZEND_HASH_FOREACH_KEY_VAL(str_ht, num_index, str_index, tmp_str) {
- ZEND_HASH_FOREACH_KEY_VAL_IND(Z_ARRVAL_P(str), num_index, str_index, tmp_str) {
++ ZEND_HASH_FOREACH_KEY_VAL_IND(str_ht, num_index, str_index, tmp_str) {
zend_string *tmp_orig_str;
zend_string *orig_str = zval_get_tmp_string(tmp_str, &tmp_orig_str);
zend_string *str_key, *tmp_str, *replace, *tmp_replace;
zval *entry;
- ZEND_HASH_FOREACH_KEY_VAL(from_ht, num_key, str_key, entry) {
- ZEND_HASH_FOREACH_KEY_VAL_IND(pats, num_key, str_key, entry) {
++ ZEND_HASH_FOREACH_KEY_VAL_IND(from_ht, num_key, str_key, entry) {
tmp_str = NULL;
if (UNEXPECTED(!str_key)) {
str_key = tmp_str = zend_long_to_str(num_key);
/* For each subject entry, convert it to string, then perform replacement
and add the result to the return_value array. */
- ZEND_HASH_FOREACH_KEY_VAL(subject_ht, num_key, string_key, subject_entry) {
- ZEND_HASH_FOREACH_KEY_VAL_IND(Z_ARRVAL_P(subject), num_key, string_key, subject_entry) {
++ ZEND_HASH_FOREACH_KEY_VAL_IND(subject_ht, num_key, string_key, subject_entry) {
+ zend_string *tmp_subject_str;
ZVAL_DEREF(subject_entry);
- if (Z_TYPE_P(subject_entry) != IS_ARRAY && Z_TYPE_P(subject_entry) != IS_OBJECT) {
- count += php_str_replace_in_subject(search, replace, subject_entry, &result, case_sensitivity);
- } else {
- ZVAL_COPY(&result, subject_entry);
- }
+ subject_str = zval_get_tmp_string(subject_entry, &tmp_subject_str);
+ count += php_str_replace_in_subject(search, replace, subject_str, &result, case_sensitivity);
+ zend_tmp_string_release(tmp_subject_str);
+
/* Add to return array */
if (string_key) {
zend_hash_add_new(Z_ARRVAL_P(return_value), string_key, &result);