]> granicus.if.org Git - php/commitdiff
MFZE1
authorZeev Suraski <zeev@php.net>
Tue, 14 Aug 2001 15:22:34 +0000 (15:22 +0000)
committerZeev Suraski <zeev@php.net>
Tue, 14 Aug 2001 15:22:34 +0000 (15:22 +0000)
Zend/zend_constants.c

index 556037aa7a3c64674a4ad16d7559bee8d26d2020..5cee47fc4137e145da7b7264f4338bc01349672d 100644 (file)
@@ -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;
        }