dmitry Thu Jun 9 04:19:30 2005 EDT Modified files: /php-src/ext/standard user_filters.c Log: Fixed reference counting and probable crash on fclose() or shutdown http://cvs.php.net/diff.php/php-src/ext/standard/user_filters.c?r1=1.28&r2=1.29&ty=u Index: php-src/ext/standard/user_filters.c diff -u php-src/ext/standard/user_filters.c:1.28 php-src/ext/standard/user_filters.c:1.29 --- php-src/ext/standard/user_filters.c:1.28 Mon Jun 21 17:08:05 2004 +++ php-src/ext/standard/user_filters.c Thu Jun 9 04:19:30 2005 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: user_filters.c,v 1.28 2004/06/21 21:08:05 pollita Exp $ */ +/* $Id: user_filters.c,v 1.29 2005/06/09 08:19:30 dmitry Exp $ */ #include "php.h" #include "php_globals.h" @@ -135,11 +135,6 @@ if (retval) zval_ptr_dtor(&retval); - if (SUCCESS == zend_hash_find(Z_OBJPROP_P(obj), "filter", sizeof("filter"), (void**)&tmp)) { - zend_list_delete(Z_LVAL_PP(tmp)); - FREE_ZVAL(*tmp); - } - /* kill the object */ zval_ptr_dtor(&obj); } @@ -345,6 +340,8 @@ ZEND_REGISTER_RESOURCE(zfilter, filter, le_userfilters); filter->abstract = obj; add_property_zval(obj, "filter", zfilter); + /* add_property_zval increments the refcount which is unwanted here */ + zval_ptr_dtor(&zfilter); return filter; } @@ -470,6 +467,8 @@ ZEND_REGISTER_RESOURCE(zbucket, bucket, le_bucket); object_init(return_value); add_property_zval(return_value, "bucket", zbucket); + /* add_property_zval increments the refcount which is unwanted here */ + zval_ptr_dtor(&zbucket); add_property_stringl(return_value, "data", bucket->buf, bucket->buflen, 1); add_property_long(return_value, "datalen", bucket->buflen); }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php