abies Thu Aug 7 21:42:09 2003 EDT
Modified files:
/php-src/ext/interbase interbase.c
Log:
Changed _php_ibase_trans_end() to allow committing of default transaction
of a non-default link
Index: php-src/ext/interbase/interbase.c
diff -u php-src/ext/interbase/interbase.c:1.120 php-src/ext/interbase/interbase.c:1.121
--- php-src/ext/interbase/interbase.c:1.120 Wed Aug 6 21:00:22 2003
+++ php-src/ext/interbase/interbase.c Thu Aug 7 21:42:09 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: interbase.c,v 1.120 2003/08/07 01:00:22 abies Exp $ */
+/* $Id: interbase.c,v 1.121 2003/08/08 01:42:09 abies Exp $ */
/* TODO: Arrays, roles?
@@ -226,7 +226,7 @@
char *tpb_ptr;
} ISC_TEB;
-/* Fill ib_link and trans_n with the correct database link and transaction slot
number.
+/* Fill ib_link and trans with the correct database link and transaction.
*/
static void _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAMETERS, zval **link_id,
ibase_db_link **ib_link, ibase_trans **trans)
{
@@ -670,7 +670,7 @@
php_info_print_table_start();
php_info_print_table_row(2, "Interbase Support", "enabled");
- php_info_print_table_row(2, "Revision", "$Revision: 1.120 $");
+ php_info_print_table_row(2, "Revision", "$Revision: 1.121 $");
#ifdef COMPILE_DL_INTERBASE
php_info_print_table_row(2, "Dynamic Module", "Yes");
#endif
@@ -1778,22 +1778,38 @@
switch (ZEND_NUM_ARGS()) {
ibase_db_link *ib_link;
- zval **trans_arg;
+ zval **arg;
case 0:
ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL,
IBG(default_link), "InterBase link", le_link, le_plink);
+ if (ib_link->trans == NULL) {
+ /* this link doesn't have a default transaction */
+ _php_ibase_module_error("Default link has no default
transaction");
+ RETURN_FALSE;
+ }
trans = ib_link->trans->trans;
break;
case 1:
- if (zend_get_parameters_ex(1, &trans_arg) == FAILURE) {
+ if (zend_get_parameters_ex(1, &arg) == FAILURE) {
RETURN_FALSE;
}
- ZEND_FETCH_RESOURCE(trans, ibase_trans *, trans_arg, -1,
"InterBase transaction", le_trans);
+ /* one id was passed, could be db or trans id */
+ _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAM_PASSTHRU,
arg, &ib_link, &trans);
+ if (trans != NULL) {
+ convert_to_long_ex(arg);
+ res_id = Z_LVAL_PP(arg);
- convert_to_long_ex(trans_arg);
- res_id = Z_LVAL_PP(trans_arg);
+ } else {
+ ZEND_FETCH_RESOURCE(ib_link, ibase_db_link *, arg, -1,
"InterBase transaction", le_trans);
+ if (ib_link->trans == NULL) {
+ /* this link doesn't have a default
transaction */
+ _php_ibase_module_error("Link has no default
transaction");
+ RETURN_FALSE;
+ }
+ trans = ib_link->trans->trans;
+ }
break;
default:
@@ -1955,8 +1971,7 @@
_php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAM_PASSTHRU,
args[0], &ib_link, &trans);
break;
case 3:
- /* two ids were passed, first should be link and second should
be trans;
- */
+ /* two ids were passed, first should be link and second should
be trans; */
ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link*, args[0], -1,
"InterBase link", le_link, le_plink);
ZEND_FETCH_RESOURCE(trans, ibase_trans*, args[1], -1,
"InterBase transaction", le_trans);
break;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php