From 1df7d39695073590745b12b0bebd3dd0fec6d94f Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Wed, 5 Apr 2006 02:28:39 +0000 Subject: [PATCH] Fixed bug #36957 (serialize() does not handle recursion). --- ext/standard/var.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ext/standard/var.c b/ext/standard/var.c index 47c8a921e1..dff8b472f4 100644 --- a/ext/standard/var.c +++ b/ext/standard/var.c @@ -1031,10 +1031,18 @@ static void php_var_serialize_intern(smart_str *buf, zval **struc, HashTable *va if (zend_hash_get_current_data_ex(myht, (void **) &data, &pos) != SUCCESS || !data - || data == struc) { + || data == struc + || (Z_TYPE_PP(data) == IS_ARRAY && Z_ARRVAL_PP(data)->nApplyCount > 1) + ) { smart_str_appendl(buf, "N;", 2); } else { + if (Z_TYPE_PP(data) == IS_ARRAY) { + Z_ARRVAL_PP(data)->nApplyCount++; + } php_var_serialize_intern(buf, data, var_hash TSRMLS_CC); + if (Z_TYPE_PP(data) == IS_ARRAY) { + Z_ARRVAL_PP(data)->nApplyCount--; + } } } } -- 2.50.1