MFH?? --Jani On Sat, 7 Dec 2002, Timm Friebe wrote:
>thekid Sat Dec 7 14:49:31 2002 EDT > > Modified files: > /php4/ext/sybase_ct php_sybase_ct.c > Log: > - Fixed three memory leaks > - Fixed segfault with sybase_unbuffered_query() and unfetched resultsets > > >Index: php4/ext/sybase_ct/php_sybase_ct.c >diff -u php4/ext/sybase_ct/php_sybase_ct.c:1.73 >php4/ext/sybase_ct/php_sybase_ct.c:1.74 >--- php4/ext/sybase_ct/php_sybase_ct.c:1.73 Tue Nov 12 17:59:11 2002 >+++ php4/ext/sybase_ct/php_sybase_ct.c Sat Dec 7 14:49:31 2002 >@@ -18,7 +18,7 @@ > +----------------------------------------------------------------------+ > */ > >-/* $Id: php_sybase_ct.c,v 1.73 2002/11/12 22:59:11 edink Exp $ */ >+/* $Id: php_sybase_ct.c,v 1.74 2002/12/07 19:49:31 thekid Exp $ */ > > > #ifdef HAVE_CONFIG_H >@@ -408,7 +408,7 @@ > { > efree(SybCtG(appname)); > if (SybCtG(callback_name)) { >- zval_dtor(SybCtG(callback_name)); >+ zval_ptr_dtor(&SybCtG(callback_name)); > SybCtG(callback_name)= NULL; > } > STR_FREE(SybCtG(server_message)); >@@ -1261,7 +1261,7 @@ > > /* Check to see if a previous sybase_unbuffered_query has read all rows */ > if (sybase_ptr->active_result_index) { >- zval *tmp; >+ zval *tmp = NULL; > > php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Sybase: Called %s() >without first fetching all rows from a previous unbuffered query", > get_active_function_name(TSRMLS_C)); >@@ -1275,10 +1275,20 @@ > Z_TYPE_P(tmp)= IS_RESOURCE; > INIT_PZVAL(tmp); > ZEND_FETCH_RESOURCE(result, sybase_result *, &tmp, -1, "Sybase >result", le_result); >+ >+ /* Causes the following segfault: >+ Program received signal SIGSEGV, Segmentation fault. >+ 0x8144380 in _efree (ptr=0x81fe024, __zend_filename=0x81841a0 >"php4/ext/sybase_ct/php_sybase_ct.c", >+ __zend_lineno=946, __zend_orig_filename=0x0, __zend_orig_lineno=0) >at php4/Zend/zend_alloc.c:229 >+ php4/Zend/zend_alloc.c:229:7284:beg:0x8144380 >+ */ >+ #if O_TIMM > if (result) { > php_sybase_finish_results(result); > } >- zval_dtor(tmp); >+ #endif >+ >+ zval_ptr_dtor(&tmp); > zend_list_delete(sybase_ptr->active_result_index); > sybase_ptr->active_result_index= 0; > } >@@ -1630,8 +1640,8 @@ > } > if (numerics) { > zend_hash_index_update(Z_ARRVAL_P(return_value), i, (void *) >&tmp, sizeof(zval *), NULL); >+ tmp->refcount++; > } >- tmp->refcount++; > > if (zend_hash_exists(Z_ARRVAL_P(return_value), result->fields[i].name, >strlen(result->fields[i].name)+1)) { > snprintf(name, 32, "%s%d", result->fields[i].name, j); >@@ -2057,8 +2067,6 @@ > efree(params); > RETURN_FALSE; > } >- >- MAKE_STD_ZVAL(SybCtG(callback_name)); > > ALLOC_ZVAL(SybCtG(callback_name)); > *SybCtG(callback_name) = **params[0]; > > > > -- <- For Sale! -> -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php