cvs: php4 /ext/standard var.c
| From: | Sascha Schumann | Date: | Fri, 29 Sep 2000 18:48:40 +0000 |
| Subject: | cvs: php4 /ext/standard var.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-1877@lists.php.net to get a copy of this message | ||
sas Fri Sep 29 11:48:40 2000 EDT
Modified files:
/php4/ext/standard var.c
Log:
Don't try to serialize references.
Circular references would otherwise kill PHP, as the serializer
would overrun the stack.
Index: php4/ext/standard/var.c
diff -u php4/ext/standard/var.c:1.72 php4/ext/standard/var.c:1.73
--- php4/ext/standard/var.c:1.72 Tue Aug 29 04:09:20 2000
+++ php4/ext/standard/var.c Fri Sep 29 11:48:40 2000
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: var.c,v 1.72 2000/08/29 11:09:20 thies Exp $ */
+/* $Id: var.c,v 1.73 2000/09/29 18:48:40 sas Exp $ */
/* {{{ includes
@@ -300,25 +300,27 @@
continue;
}
- switch (i) {
- case HASH_KEY_IS_LONG:
- MAKE_STD_ZVAL(d);
- d->type = IS_LONG;
- d->value.lval = index;
- php_var_serialize(buf, &d);
- FREE_ZVAL(d);
- break;
- case HASH_KEY_IS_STRING:
- MAKE_STD_ZVAL(d);
- d->type = IS_STRING;
- d->value.str.val = key;
- d->value.str.len = strlen(key);
- php_var_serialize(buf, &d);
- efree(key);
- FREE_ZVAL(d);
- break;
+ if (!(*data)->is_ref) {
+ switch (i) {
+ case HASH_KEY_IS_LONG:
+ MAKE_STD_ZVAL(d);
+ d->type = IS_LONG;
+ d->value.lval = index;
+ php_var_serialize(buf, &d);
+ FREE_ZVAL(d);
+ break;
+ case HASH_KEY_IS_STRING:
+ MAKE_STD_ZVAL(d);
+ d->type = IS_STRING;
+ d->value.str.val = key;
+ d->value.str.len = strlen(key);
+ php_var_serialize(buf, &d);
+ efree(key);
+ FREE_ZVAL(d);
+ break;
+ }
+ php_var_serialize(buf, data);
}
- php_var_serialize(buf, data);
}
}
STR_CAT(buf, "}", 1);