Nope, that's not a valid patch.  zval_dtor() is not supposed to pay any 
attention to refcount's.  It should be fixed at a different level, I'll 
check into it.

Zeev

At 22:58 17/08/2002, Ilia A. wrote:
>Since there is no check if there is a refcount before freeing an object there
>is a segv if the object gets freed. This segv can be caused by the following
>php code
><?php
>$t = (object) $_GLOBALS;
>?>
>
>RCS file: /repository/Zend/zend_variables.c,v
>retrieving revision 1.42
>diff -u -3 -p -r1.42 zend_variables.c
>--- zend_variables.c    22 Jun 2002 14:11:43 -0000      1.42
>+++ zend_variables.c    17 Aug 2002 19:08:28 -0000
>@@ -54,8 +54,10 @@ ZEND_API void _zval_dtor(zval *zvalue ZE
>                         }
>                         break;
>                 case IS_OBJECT:
>-                       zend_hash_destroy(zvalue->value.obj.properties);
>-                       FREE_HASHTABLE(zvalue->value.obj.properties);
>+                       if (zvalue->refcount) {
>+
>zend_hash_destroy(zvalue->value.obj.properties);
>+                               FREE_HASHTABLE(zvalue->value.obj.properties);
>+                       }
>                         break;
>                 case IS_RESOURCE:       {
>                                 TSRMLS_FETCH();


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to