Commit:    45f3322905dfa5ae60f7b5a55b8cb29d0ac63e5d
Author:    Lonny Kapelushnik <lon...@gmail.com>         Sun, 5 Aug 2012 
15:36:36 +0000
Committer: Stanislav Malyshev <s...@php.net>      Sun, 5 Aug 2012 20:56:06 -0700
Parents:   81c6a060a271c29123c342a282d2c48fda45be03
Branches:  PHP-5.4 master

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=45f3322905dfa5ae60f7b5a55b8cb29d0ac63e5d

Log:
var_export outputs an E_WARNING when recursion is detected

Changed paths:
  M  ext/standard/tests/general_functions/var_export_error2.phpt
  M  ext/standard/tests/general_functions/var_export_error3.phpt
  M  ext/standard/var.c


Diff:
diff --git a/ext/standard/tests/general_functions/var_export_error2.phpt 
b/ext/standard/tests/general_functions/var_export_error2.phpt
index 2b30669..a6403e6 100644
--- a/ext/standard/tests/general_functions/var_export_error2.phpt
+++ b/ext/standard/tests/general_functions/var_export_error2.phpt
@@ -15,4 +15,5 @@ var_export($obj, true);
 ===DONE===
 --EXPECTF--
 
-Fatal error: Nesting level too deep - recursive dependency? in %s on line 9
\ No newline at end of file
+Warning: var_export does not handle circular references in %s on line 9
+===DONE===
diff --git a/ext/standard/tests/general_functions/var_export_error3.phpt 
b/ext/standard/tests/general_functions/var_export_error3.phpt
index 03ed496..c862691 100644
--- a/ext/standard/tests/general_functions/var_export_error3.phpt
+++ b/ext/standard/tests/general_functions/var_export_error3.phpt
@@ -15,4 +15,5 @@ var_export($a, true);
 ===DONE===
 --EXPECTF--
 
-Fatal error: Nesting level too deep - recursive dependency? in %s on line 9
\ No newline at end of file
+Warning: var_export does not handle circular references in %s on line 9
+===DONE===
diff --git a/ext/standard/var.c b/ext/standard/var.c
index 735d0a7..494fb58 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);


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to