diff options
author | Dmitry Stogov <dmitry@zend.com> | 2017-10-06 01:34:50 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2017-10-06 01:34:50 +0300 |
commit | cb9d81ef4f07f82835273800b0cb3d6a67816050 (patch) | |
tree | dad640422674e3eb45a2577f5b29fcd7ad9c8676 /UPGRADING.INTERNALS | |
parent | 39ea632f7468e1001b15b9c43afc6aba9debdc9c (diff) | |
download | php-git-cb9d81ef4f07f82835273800b0cb3d6a67816050.tar.gz |
Refactored recursion pretection
Diffstat (limited to 'UPGRADING.INTERNALS')
-rw-r--r-- | UPGRADING.INTERNALS | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/UPGRADING.INTERNALS b/UPGRADING.INTERNALS index efb9920bfb..1b6ba2adbb 100644 --- a/UPGRADING.INTERNALS +++ b/UPGRADING.INTERNALS @@ -11,6 +11,7 @@ PHP 7.2 INTERNALS UPGRADE NOTES h. valid_symbol_table removed i. array_init() and array_init_size() j. Run-time constant operand addressing + k. Array/Object recursion protection 2. Build system changes a. Unix build system changes @@ -70,6 +71,19 @@ PHP 7.2 INTERNALS UPGRADE NOTES RT_CONSTANT_EX, EX_CONSTANT should be substituted by RT_CONSTANT than now use "opline" (instead of "op_array") as first argument. + k. Protection from recursion during processing circular data structures was + refactored. HashTable.nApplyCount and IS_OBJ_APPLY_COUNT are replaced by + single flag GC_PROTECTED. Corresponding macros Z_OBJ_APPLY_COUNT, + Z_OBJ_INC_APPLY_COUNT, Z_OBJ_DEC_APPLY_COUNT, ZEND_HASH_GET_APPLY_COUNT, + ZEND_HASH_INC_APPLY_COUNT, ZEND_HASH_DEC_APPLY_COUNT are replaced with + GC_IS_RECURSIVE, GC_PROTECT_RECURSION, GC_UNPROTECT_RECURSION, + Z_IS_RECURSIVE, Z_PROTECT_RECURSION, Z_UNPROTECT_RECURSION. + + HASH_FLAG_APPLY_PROTECTION flag and ZEND_HASH_APPLY_PROTECTION() macro + are removed. All mutable arrays should use recursion protection. + Corresponding checks should be replaced by Z_REFCOUNTED() or + !(GC_GLAGS(p) & GC_IMMUTABLE). + ======================== 2. Build system changes |