summaryrefslogtreecommitdiff
path: root/ext/standard/var.c
diff options
context:
space:
mode:
authorLonny Kapelushnik <lonnyk@gmail.com>2012-08-05 15:36:36 +0000
committerStanislav Malyshev <stas@php.net>2012-08-05 20:56:06 -0700
commit45f3322905dfa5ae60f7b5a55b8cb29d0ac63e5d (patch)
treee0320ef4e7dd50e889c296ccacf58b9134e32993 /ext/standard/var.c
parent81c6a060a271c29123c342a282d2c48fda45be03 (diff)
downloadphp-git-45f3322905dfa5ae60f7b5a55b8cb29d0ac63e5d.tar.gz
var_export outputs an E_WARNING when recursion is detected
Diffstat (limited to 'ext/standard/var.c')
-rw-r--r--ext/standard/var.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/ext/standard/var.c b/ext/standard/var.c
index 735d0a7cbb..494fb583c7 100644
--- a/ext/standard/var.c
+++ b/ext/standard/var.c
@@ -453,6 +453,11 @@ PHPAPI void php_var_export_ex(zval **struc, int level, smart_str *buf TSRMLS_DC)
break;
case IS_ARRAY:
myht = Z_ARRVAL_PP(struc);
+ if(myht && myht->nApplyCount > 0){
+ smart_str_appendl(buf, "NULL", 4);
+ zend_error(E_WARNING, "var_export does not handle circular references");
+ return;
+ }
if (level > 1) {
smart_str_appendc(buf, '\n');
buffer_append_spaces(buf, level - 1);
@@ -469,6 +474,11 @@ PHPAPI void php_var_export_ex(zval **struc, int level, smart_str *buf TSRMLS_DC)
case IS_OBJECT:
myht = Z_OBJPROP_PP(struc);
+ if(myht && myht->nApplyCount > 0){
+ smart_str_appendl(buf, "NULL", 4);
+ zend_error(E_WARNING, "var_export does not handle circular references");
+ return;
+ }
if (level > 1) {
smart_str_appendc(buf, '\n');
buffer_append_spaces(buf, level - 1);