dmitry          Thu Jun  9 04:19:18 2005 EDT

  Modified files:              (Branch: PHP_5_0)
    /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.28.2.1&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.28.2.1
--- 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:18 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.28.2.1 2005/06/09 08:19:18 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

Reply via email to