]> granicus.if.org Git - php/commitdiff
adding in some error checking for parameter counts, and some thread safety for
authorDan Kalowsky <kalowsky@php.net>
Thu, 14 Jun 2001 15:02:17 +0000 (15:02 +0000)
committerDan Kalowsky <kalowsky@php.net>
Thu, 14 Jun 2001 15:02:17 +0000 (15:02 +0000)
functions

ext/odbc/php_odbc.c

index 60ba594ce1498b0f4d7af12d8f7f8e4e43200dfb..bca98d26b8d8cd553a5ab919c127df8c6d0af15b 100644 (file)
@@ -778,6 +778,7 @@ PHP_FUNCTION(odbc_prepare)
 #ifdef HAVE_SQL_EXTENDED_FETCH
        UDWORD      scrollopts;
 #endif
+       ODBCLS_FETCH();
 
        if (zend_get_parameters_ex(2, &pv_conn, &pv_query) == FAILURE) {
                WRONG_PARAM_COUNT;
@@ -882,20 +883,25 @@ PHP_FUNCTION(odbc_execute)
        odbc_result   *result;
        int numArgs, i, ne;
        RETCODE rc;
+       ODBCLS_FETCH();
        
        numArgs = ZEND_NUM_ARGS();
-       if (numArgs == 1) {
-               if (zend_get_parameters_ex(1, &pv_res) == FAILURE)
-                       WRONG_PARAM_COUNT;
-       } else {
-               if (zend_get_parameters_ex(2, &pv_res, &pv_param_arr) == FAILURE)
+       switch(numArgs) {
+               case 1:
+                       if (zend_get_parameters_ex(1, &pv_res) == FAILURE)
+                               WRONG_PARAM_COUNT;
+                       break;
+               case 2:
+                       if (zend_get_parameters_ex(2, &pv_res, &pv_param_arr) == FAILURE)
+                               WRONG_PARAM_COUNT;
+                       if ((*pv_param_arr)->type != IS_ARRAY) {
+                               php_error(E_WARNING, "No array passed to odbc_execute()");
+                               return;
+                       }
+                       break;
+               default:
                        WRONG_PARAM_COUNT;
-
-        if ((*pv_param_arr)->type != IS_ARRAY) {
-            php_error(E_WARNING, "No array passed to odbc_execute()");
-            return;
-        }
-    }
+       }
 
        ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result);