From 4b89b67d1cfd4e3dc28320335d02b880ee7bf4c8 Mon Sep 17 00:00:00 2001 From: Sascha Schumann Date: Fri, 29 Sep 2000 18:48:40 +0000 Subject: [PATCH] Don't try to serialize references. Circular references would otherwise kill PHP, as the serializer would overrun the stack. --- ext/standard/var.c | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/ext/standard/var.c b/ext/standard/var.c index ac0dadc839..8338959088 100644 --- a/ext/standard/var.c +++ b/ext/standard/var.c @@ -300,25 +300,27 @@ void php_var_serialize(pval *buf, pval **struc) 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); -- 2.50.1