abies           Fri Nov 14 05:38:42 2003 EDT

  Modified files:              (Branch: PHP_4_3)
    /php-src/ext/interbase      interbase.c 
  Log:
  Fix the fix [ibase_trans()]
  
Index: php-src/ext/interbase/interbase.c
diff -u php-src/ext/interbase/interbase.c:1.91.2.23 
php-src/ext/interbase/interbase.c:1.91.2.24
--- php-src/ext/interbase/interbase.c:1.91.2.23 Tue Nov 11 22:05:23 2003
+++ php-src/ext/interbase/interbase.c   Fri Nov 14 05:38:41 2003
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: interbase.c,v 1.91.2.23 2003/11/12 03:05:23 iliaa Exp $ */
+/* $Id: interbase.c,v 1.91.2.24 2003/11/14 10:38:41 abies Exp $ */
 
 
 /* TODO: Arrays, roles?
@@ -624,7 +624,7 @@
 
        php_info_print_table_start();
        php_info_print_table_row(2, "Interbase Support", "enabled");
-       php_info_print_table_row(2, "Revision", "$Revision: 1.91.2.23 $");
+       php_info_print_table_row(2, "Revision", "$Revision: 1.91.2.24 $");
 #ifdef COMPILE_DL_INTERBASE
        php_info_print_table_row(2, "Dynamic Module", "yes");
 #endif
@@ -1411,13 +1411,13 @@
        XSQLDA *in_sqlda = NULL, *out_sqlda = NULL;
        BIND_BUF *bind_buf = NULL;
        int rv = FAILURE;
-       
+
        IB_RESULT = NULL;
 
        if (argc > 0 && args != NULL) {
                SEPARATE_ZVAL(args);
        }
-       
+
        /* allocate sqlda and output buffers */
        if (ib_query->out_sqlda) { /* output variables in select, select for update */
                IBDEBUG("Query wants XSQLDA for output");
@@ -1493,13 +1493,11 @@
        zval ***args;
        char tpb[20], *tpbp = NULL;
        long trans_argl = 0;
-       int tpb_len = 0, argn, link_id = 0, trans_n = 0, i;
+       int tpb_len = 0, argn, link_id, trans_n = 0;
        ibase_db_link *ib_link;
        ibase_tr_link *ib_trans;
-       
-       RESET_ERRMSG;
 
-       link_id = IBG(default_link);
+       RESET_ERRMSG;
 
        /* TODO: multi-databases trans */
        argn = ZEND_NUM_ARGS();
@@ -1516,9 +1514,9 @@
 
                /* Handle all database links, although we don't support multibase
                   transactions yet, so only the last one is will be used. */
-               for (i = argn-1; i > 0 && Z_TYPE_PP(args[i]) == IS_RESOURCE; i--) {
-                       ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, args[i], -1, 
"InterBase link", le_link, le_plink);
-                       link_id = Z_LVAL_PP(args[i]);
+               if (argn > 1) {
+                       ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, args[argn-1], 
-1, "InterBase link", le_link, le_plink);
+                       link_id = Z_LVAL_PP(args[argn-1]);
                }
 
                /* First argument is transaction parameters */
@@ -1528,7 +1526,8 @@
                efree(args);
        }
 
-       if (!link_id) {
+       if (argn < 2) {
+               link_id = IBG(default_link);
                ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, link_id, 
"InterBase link", le_link, le_plink);
        }
 
@@ -1547,8 +1546,8 @@
                        if (trans_argl & PHP_IBASE_REC_VERSION) {
                                tpb[tpb_len++] = isc_tpb_rec_version;
                        }else{
-                               tpb[tpb_len++] = isc_tpb_no_rec_version; /* default in 
read_committed  */ 
-                       }       
+                               tpb[tpb_len++] = isc_tpb_no_rec_version; /* default in 
read_committed  */
+                       }
                } else if (trans_argl & PHP_IBASE_CONSISTENCY) {
                        tpb[tpb_len++] = isc_tpb_consistency;
                } else {

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to