diff options
| author | Daniela Mariaschi <daniela@php.net> | 2003-05-05 22:25:29 +0000 |
|---|---|---|
| committer | Daniela Mariaschi <daniela@php.net> | 2003-05-05 22:25:29 +0000 |
| commit | 46b1372de7c1ba4eff558fdbfff70286abeb5119 (patch) | |
| tree | d484bcaa4c68b206f1317450d76da02741b4283c | |
| parent | 7f404846ad6864ed889e3214dfe5cf2f18916125 (diff) | |
| download | php-git-46b1372de7c1ba4eff558fdbfff70286abeb5119.tar.gz | |
- removed error message in dtor
(causing segfault when user doesn't free statement)
- removed erroneous controls as for bug #23436
| -rw-r--r-- | ext/interbase/interbase.c | 47 |
1 files changed, 28 insertions, 19 deletions
diff --git a/ext/interbase/interbase.c b/ext/interbase/interbase.c index bedfdf510b..65f951242d 100644 --- a/ext/interbase/interbase.c +++ b/ext/interbase/interbase.c @@ -385,21 +385,14 @@ static void _php_ibase_close_plink(zend_rsrc_list_entry *rsrc TSRMLS_DC) */ static void _php_ibase_free_result(zend_rsrc_list_entry *rsrc TSRMLS_DC) { - char tr_items[] = {isc_info_tra_id }; - char tmp[32]; /* should be enough as on the Api doc */ - ibase_result *ib_result = (ibase_result *) rsrc->ptr; - IBDEBUG("Freeing result..."); + IBDEBUG("Freeing result by dtor..."); if (ib_result) { _php_ibase_free_xsqlda(ib_result->out_sqlda); - isc_transaction_info(IB_STATUS, &ib_result->trans,sizeof(tr_items), tr_items, sizeof(tmp), tmp); - /* we have a transaction still open and we really want to drop the statement ? */ - if (!(IB_STATUS[0] && IB_STATUS[1]) && ib_result->drop_stmt && ib_result->stmt) { - IBDEBUG("Dropping statement handle (free_result)..."); - if (isc_dsql_free_statement(IB_STATUS, &ib_result->stmt, DSQL_drop)) { - _php_ibase_error(TSRMLS_C); - } + if (ib_result->drop_stmt && ib_result->stmt) { + IBDEBUG("Dropping statement handle (free_result dtor)..."); + isc_dsql_free_statement(IB_STATUS, &ib_result->stmt, DSQL_drop); } else { /* Shouldn't be here unless query was select and had parameter placeholders, in which case ibase_execute handles this??? @@ -423,9 +416,6 @@ static void _php_ibase_free_result(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ _php_ibase_free_query() */ static void _php_ibase_free_query(ibase_query *ib_query TSRMLS_DC) { - char tr_items[] = {isc_info_tra_id }; - char tmp[32] ; /* ...should be enough as on the Api doc */ - IBDEBUG("Freeing query..."); if (ib_query) { if (ib_query->in_sqlda) { @@ -434,9 +424,7 @@ static void _php_ibase_free_query(ibase_query *ib_query TSRMLS_DC) if (ib_query->out_sqlda) { efree(ib_query->out_sqlda); } - isc_transaction_info(IB_STATUS, &ib_query->trans,sizeof(tr_items), tr_items, sizeof(tmp), tmp); - /* we have the trans still open and a statement to drop? */ - if (!(IB_STATUS[0] && IB_STATUS[1]) && ib_query->stmt) { + if (ib_query->stmt) { IBDEBUG("Dropping statement handle (free_query)..."); if (isc_dsql_free_statement(IB_STATUS, &ib_query->stmt, DSQL_drop)) { _php_ibase_error(TSRMLS_C); @@ -453,12 +441,33 @@ static void _php_ibase_free_query(ibase_query *ib_query TSRMLS_DC) } /* }}} */ +/* {{{ php_ibase_free_query_rsrc() */ static void php_ibase_free_query_rsrc(zend_rsrc_list_entry *rsrc TSRMLS_DC) { - ibase_query *query = (ibase_query *)rsrc->ptr; + ibase_query *ib_query = (ibase_query *)rsrc->ptr; - _php_ibase_free_query(query TSRMLS_CC); + IBDEBUG("Freeing query by dtor..."); + if (ib_query) { + if (ib_query->in_sqlda) { + efree(ib_query->in_sqlda); + } + if (ib_query->out_sqlda) { + efree(ib_query->out_sqlda); + } + if (ib_query->stmt) { + IBDEBUG("Dropping statement handle (free_query dtor)..."); + isc_dsql_free_statement(IB_STATUS, &ib_query->stmt, DSQL_drop); + } + if (ib_query->in_array) { + efree(ib_query->in_array); + } + if (ib_query->out_array) { + efree(ib_query->out_array); + } + efree(ib_query); + } } +/* }}} */ /* {{{ _php_ibase_free_blob() */ static void _php_ibase_free_blob(zend_rsrc_list_entry *rsrc TSRMLS_DC) |
