From dee5a450d9b7f7b03f012dd1912cc0a3dcb0482c Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Thu, 15 Nov 2018 17:13:12 +0100 Subject: Fixed bug #77165 Also add some helper macros for PROTECT/UNPROTECT that check for IMMUTABLE. These checks are needed for nearly any use of PROTECT/UNPROTECT. --- ext/mbstring/mbstring.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'ext/mbstring/mbstring.c') diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 6554bd72bf..ae8c4bef7f 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -3125,7 +3125,7 @@ MBSTRING_API HashTable *php_mb_convert_encoding_recursive(HashTable *input, cons php_error_docref(NULL, E_WARNING, "Cannot convert recursively referenced values"); return NULL; } - GC_PROTECT_RECURSION(input); + GC_TRY_PROTECT_RECURSION(input); output = zend_new_array(zend_hash_num_elements(input)); ZEND_HASH_FOREACH_KEY_VAL(input, idx, key, entry) { /* convert key */ @@ -3170,7 +3170,7 @@ MBSTRING_API HashTable *php_mb_convert_encoding_recursive(HashTable *input, cons zend_hash_index_add(output, idx, &entry_tmp); } } ZEND_HASH_FOREACH_END(); - GC_UNPROTECT_RECURSION(input); + GC_TRY_UNPROTECT_RECURSION(input); return output; } @@ -4738,7 +4738,7 @@ MBSTRING_API int php_mb_check_encoding_recursive(HashTable *vars, const zend_str php_error_docref(NULL, E_WARNING, "Cannot not handle circular references"); return 0; } - GC_PROTECT_RECURSION(vars); + GC_TRY_PROTECT_RECURSION(vars); ZEND_HASH_FOREACH_KEY_VAL(vars, idx, key, entry) { ZVAL_DEREF(entry); if (key) { @@ -4772,7 +4772,7 @@ MBSTRING_API int php_mb_check_encoding_recursive(HashTable *vars, const zend_str break; } } ZEND_HASH_FOREACH_END(); - GC_UNPROTECT_RECURSION(vars); + GC_TRY_UNPROTECT_RECURSION(vars); mbfl_buffer_converter_delete(convd); return valid; } -- cgit v1.2.1