summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniela Mariaschi <daniela@php.net>2002-05-09 21:41:20 +0000
committerDaniela Mariaschi <daniela@php.net>2002-05-09 21:41:20 +0000
commitf7d5d1036c22e3671d4030e1cab31cc440801b9f (patch)
treeed33df4fba08dc97d367183a1bba4c5f83b5a298
parent0c7cfcda4fe81b18190d220f117573e9b1ace18b (diff)
downloadphp-git-f7d5d1036c22e3671d4030e1cab31cc440801b9f.tar.gz
fix test 5 to pass
-rw-r--r--ext/interbase/interbase.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/ext/interbase/interbase.c b/ext/interbase/interbase.c
index a5daf4e037..7166605d85 100644
--- a/ext/interbase/interbase.c
+++ b/ext/interbase/interbase.c
@@ -478,19 +478,23 @@ static void _php_ibase_free_trans(zend_rsrc_list_entry *rsrc TSRMLS_DC)
{
ibase_tr_link *ib_trans = (ibase_tr_link *)rsrc->ptr;
ibase_db_link *ib_link;
+ int type;
+ void *ptr;
- ib_link = (ibase_db_link *) zend_fetch_resource(NULL TSRMLS_CC, ib_trans->link_rsrc, "InterBase link", NULL, 2, le_link, le_plink);
+ ptr = zend_list_find(ib_trans->link_rsrc, &type); /* check if the link is still there */
+ if (ptr && (type==le_link || type==le_plink)) {
+ ib_link = (ibase_db_link *) zend_fetch_resource(NULL TSRMLS_CC, ib_trans->link_rsrc, "InterBase link", NULL, 2, le_link, le_plink);
- if (ib_link) {
- if (ib_link->trans[ib_trans->trans_num] != NULL) {
- IBDEBUG("Rolling back unhandled transaction...");
- if (isc_rollback_transaction(IB_STATUS, &ib_link->trans[ib_trans->trans_num])) {
- _php_ibase_error();
+ if (ib_link) {
+ if (ib_link->trans[ib_trans->trans_num] != NULL) {
+ IBDEBUG("Rolling back unhandled transaction...");
+ if (isc_rollback_transaction(IB_STATUS, &ib_link->trans[ib_trans->trans_num])) {
+ _php_ibase_error();
+ }
+ ib_link->trans[ib_trans->trans_num] = NULL;
}
- ib_link->trans[ib_trans->trans_num] = NULL;
}
- }
-
+ }
efree(ib_trans);
}
/* }}} */