summaryrefslogtreecommitdiff
path: root/UPGRADING.INTERNALS
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2017-10-06 01:34:50 +0300
committerDmitry Stogov <dmitry@zend.com>2017-10-06 01:34:50 +0300
commitcb9d81ef4f07f82835273800b0cb3d6a67816050 (patch)
treedad640422674e3eb45a2577f5b29fcd7ad9c8676 /UPGRADING.INTERNALS
parent39ea632f7468e1001b15b9c43afc6aba9debdc9c (diff)
downloadphp-git-cb9d81ef4f07f82835273800b0cb3d6a67816050.tar.gz
Refactored recursion pretection
Diffstat (limited to 'UPGRADING.INTERNALS')
-rw-r--r--UPGRADING.INTERNALS14
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