diff options
author | Daniela Mariaschi <daniela@php.net> | 2002-05-09 21:41:20 +0000 |
---|---|---|
committer | Daniela Mariaschi <daniela@php.net> | 2002-05-09 21:41:20 +0000 |
commit | f7d5d1036c22e3671d4030e1cab31cc440801b9f (patch) | |
tree | ed33df4fba08dc97d367183a1bba4c5f83b5a298 | |
parent | 0c7cfcda4fe81b18190d220f117573e9b1ace18b (diff) | |
download | php-git-f7d5d1036c22e3671d4030e1cab31cc440801b9f.tar.gz |
fix test 5 to pass
-rw-r--r-- | ext/interbase/interbase.c | 22 |
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); } /* }}} */ |