dmitry Mon Jul 10 10:05:35 2006 UTC Modified files: /php-src/ext/mysqli mysqli.c Log: Fixed bug #38019 (segfault extending mysqli class) http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/mysqli.c?r1=1.91&r2=1.92&diff_format=u Index: php-src/ext/mysqli/mysqli.c diff -u php-src/ext/mysqli/mysqli.c:1.91 php-src/ext/mysqli/mysqli.c:1.92 --- php-src/ext/mysqli/mysqli.c:1.91 Wed Jul 5 11:48:17 2006 +++ php-src/ext/mysqli/mysqli.c Mon Jul 10 10:05:35 2006 @@ -15,7 +15,7 @@ | Author: Georg Richter <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ - $Id: mysqli.c,v 1.91 2006/07/05 11:48:17 tony2001 Exp $ + $Id: mysqli.c,v 1.92 2006/07/10 10:05:35 dmitry Exp $ */ #ifdef HAVE_CONFIG_H @@ -132,13 +132,15 @@ } /* }}} */ -/* {{{ mysqli_objects_free_storage +/* {{{ mysqli_objects_destroy_object */ -static void mysqli_objects_free_storage(zend_object *object TSRMLS_DC) +static void mysqli_objects_destroy_object(zend_object *object, zend_object_handle handle TSRMLS_DC) { mysqli_object *intern = (mysqli_object *)object; MYSQLI_RESOURCE *my_res = (MYSQLI_RESOURCE *)intern->ptr; + zend_objects_destroy_object(object, handle TSRMLS_CC); + /* link object */ if (instanceof_function(intern->zo.ce, mysqli_link_class_entry TSRMLS_CC)) { if (my_res && my_res->ptr) { @@ -164,9 +166,17 @@ php_clear_warnings((MYSQLI_WARNING *)my_res->info); } } - intern->ptr = NULL; - my_efree(my_res); - +} +/* }}} */ + +/* {{{ mysqli_objects_free_storage + */ +static void mysqli_objects_free_storage(zend_object *object TSRMLS_DC) +{ + mysqli_object *intern = (mysqli_object *)object; + MYSQLI_RESOURCE *my_res = (MYSQLI_RESOURCE *)intern->ptr; + + my_efree(my_res); zend_object_std_dtor(&intern->zo TSRMLS_CC); efree(intern); } @@ -352,7 +362,7 @@ zend_hash_copy(intern->zo.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *)); - retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t) mysqli_objects_free_storage, NULL TSRMLS_CC); + retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t) mysqli_objects_destroy_object, (zend_objects_free_object_storage_t) mysqli_objects_free_storage, NULL TSRMLS_CC); retval.handlers = &mysqli_object_handlers; return retval;
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php