summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2001-08-14 15:22:34 +0000
committerZeev Suraski <zeev@php.net>2001-08-14 15:22:34 +0000
commitac0bee7ec96aa7a5a2294681f442e189baa7548d (patch)
tree97bf14e7240f149db0655052e15e02c2300623cf
parented126f68d5359a5f5ca7c7e86fcc66a0019d567c (diff)
downloadphp-git-ac0bee7ec96aa7a5a2294681f442e189baa7548d.tar.gz
MFZE1
-rw-r--r--Zend/zend_constants.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/Zend/zend_constants.c b/Zend/zend_constants.c
index 556037aa7a..5cee47fc41 100644
--- a/Zend/zend_constants.c
+++ b/Zend/zend_constants.c
@@ -27,7 +27,8 @@
void free_zend_constant(zend_constant *c)
{
- if (!(c->flags & CONST_PERSISTENT)) {
+ if (!(c->flags & CONST_PERSISTENT)
+ || (c->flags & CONST_EFREE_PERSISTENT)) {
zval_dtor(&c->value);
}
free(c->name);
@@ -246,7 +247,10 @@ ZEND_API int zend_register_constant(zend_constant *c TSRMLS_DC)
zend_str_tolower(lowercase_name, c->name_len);
if (zend_hash_add(EG(zend_constants), lowercase_name, c->name_len, (void *) c, sizeof(zend_constant), NULL)==FAILURE) {
free(c->name);
- zval_dtor(&c->value);
+ if (!(c->flags & CONST_PERSISTENT)
+ || (c->flags & CONST_EFREE_PERSISTENT)) {
+ zval_dtor(&c->value);
+ }
zend_error(E_NOTICE,"Constant %s already defined", lowercase_name);
ret = FAILURE;
}