felipe          Thu May 14 17:25:51 2009 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src/ext/odbc   php_odbc.c 
  Log:
  - MFH: Improved fix for #42414
  
http://cvs.php.net/viewvc.cgi/php-src/ext/odbc/php_odbc.c?r1=1.189.2.4.2.13&r2=1.189.2.4.2.14&diff_format=u
Index: php-src/ext/odbc/php_odbc.c
diff -u php-src/ext/odbc/php_odbc.c:1.189.2.4.2.13 
php-src/ext/odbc/php_odbc.c:1.189.2.4.2.14
--- php-src/ext/odbc/php_odbc.c:1.189.2.4.2.13  Thu May 14 01:27:23 2009
+++ php-src/ext/odbc/php_odbc.c Thu May 14 17:25:51 2009
@@ -20,7 +20,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: php_odbc.c,v 1.189.2.4.2.13 2009/05/14 01:27:23 felipe Exp $ */
+/* $Id: php_odbc.c,v 1.189.2.4.2.14 2009/05/14 17:25:51 felipe Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -2863,7 +2863,7 @@
 PHP_FUNCTION(odbc_tables)
 {
        zval **pv_conn, **pv_cat, **pv_schema, **pv_table, **pv_type;
-       odbc_result   *result = NULL;
+       odbc_result *result = NULL;
        odbc_connection *conn;
        char *cat = NULL, *schema = NULL, *table = NULL, *type = NULL;
        RETCODE rc;
@@ -2884,8 +2884,10 @@
                        convert_to_string_ex(pv_schema);
                        schema = Z_STRVAL_PP(pv_schema);
                case 2:
-                       convert_to_string_ex(pv_cat);
-                       cat = Z_STRVAL_PP(pv_cat);
+                       if (Z_TYPE_PP(pv_cat) != IS_NULL) {
+                               convert_to_string_ex(pv_cat);
+                               cat = Z_STRVAL_PP(pv_cat);
+                       }
        }
 
        ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", 
le_conn, le_pconn);
@@ -2967,9 +2969,11 @@
                        schema = Z_STRVAL_PP(pv_schema);
                        schema_len = Z_STRLEN_PP(pv_schema);
                case 2:
-                       convert_to_string_ex(pv_cat);
-                       cat = Z_STRVAL_PP(pv_cat);
-                       cat_len = Z_STRLEN_PP(pv_cat);
+                       if (Z_TYPE_PP(pv_cat) != NULL) {
+                               convert_to_string_ex(pv_cat);
+                               cat = Z_STRVAL_PP(pv_cat);
+                               cat_len = Z_STRLEN_PP(pv_cat);
+                       }
        }
 
        ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", 
le_conn, le_pconn);
@@ -2994,10 +2998,6 @@
         */
        if (table && strlen(table) && schema && !strlen(schema)) schema = NULL;
 
-       if (cat && cat_len == 0) {
-               cat = NULL;
-       }
-
        rc = SQLColumns(result->stmt, 
                        cat, cat_len,
                        schema, schema_len,
@@ -3044,8 +3044,10 @@
                if (zend_get_parameters_ex(5, &pv_conn, &pv_cat, &pv_schema, 
&pv_table, &pv_column) == FAILURE) {
                        WRONG_PARAM_COUNT;
                }
-               convert_to_string_ex(pv_cat);
-               cat = Z_STRVAL_PP(pv_cat);
+               if (Z_TYPE_PP(pv_cat) != IS_NULL) {
+                       convert_to_string_ex(pv_cat);
+                       cat = Z_STRVAL_PP(pv_cat);
+               }
                convert_to_string_ex(pv_schema);
                schema = Z_STRVAL_PP(pv_schema);
                convert_to_string_ex(pv_table);
@@ -3072,10 +3074,6 @@
                efree(result);
                RETURN_FALSE;
        }
-       
-       if (cat_len == 0) {
-               cat = NULL;
-       }
 
        rc = SQLColumnPrivileges(result->stmt, 
                        cat, SAFE_SQL_NTS(cat),
@@ -3114,7 +3112,7 @@
 {
        zval **pv_conn, **pv_pcat, **pv_pschema, **pv_ptable;
        zval **pv_fcat, **pv_fschema, **pv_ftable;
-       odbc_result   *result = NULL;
+       odbc_result *result = NULL;
        odbc_connection *conn;
        char *pcat = NULL, *pschema = NULL, *ptable = NULL;
        char *fcat = NULL, *fschema = NULL, *ftable = NULL;
@@ -3127,8 +3125,10 @@
                                        &pv_fcat, &pv_fschema, &pv_ftable) == 
FAILURE) {
                        WRONG_PARAM_COUNT;
                }
-               convert_to_string_ex(pv_pcat);
-               pcat = Z_STRVAL_PP(pv_pcat);
+               if (Z_TYPE_PP(pv_pcat) != IS_NULL) {
+                       convert_to_string_ex(pv_pcat);
+                       pcat = Z_STRVAL_PP(pv_pcat);
+               }
                convert_to_string_ex(pv_pschema);
                pschema = Z_STRVAL_PP(pv_pschema);
                convert_to_string_ex(pv_ptable);
@@ -3170,10 +3170,6 @@
                efree(result);
                RETURN_FALSE;
        }
-       
-       if (pcat_len == 0) {
-               pcat = NULL;
-       }
 
        rc = SQLForeignKeys(result->stmt, 
                        pcat, SAFE_SQL_NTS(pcat), 
@@ -3291,8 +3287,10 @@
                if (zend_get_parameters_ex(4, &pv_conn, &pv_cat, &pv_schema, 
&pv_table) == FAILURE) {
                        WRONG_PARAM_COUNT;
                }
-               convert_to_string_ex(pv_cat);
-               cat = Z_STRVAL_PP(pv_cat);
+               if (Z_TYPE_PP(pv_cat) != IS_NULL) {
+                       convert_to_string_ex(pv_cat);
+                       cat = Z_STRVAL_PP(pv_cat);
+               }
                convert_to_string_ex(pv_schema);
                schema = Z_STRVAL_PP(pv_schema);
                convert_to_string_ex(pv_table);
@@ -3317,10 +3315,6 @@
                efree(result);
                RETURN_FALSE;
        }
-       
-       if (cat_len == 0) {
-               cat = NULL;
-       }
 
        rc = SQLPrimaryKeys(result->stmt, 
                        cat, SAFE_SQL_NTS(cat), 
@@ -3513,7 +3507,7 @@
 {
        zval **pv_conn, **pv_type, **pv_cat, **pv_schema, **pv_name;
        zval **pv_scope, **pv_nullable;
-       odbc_result   *result = NULL;
+       odbc_result *result = NULL;
        odbc_connection *conn;
        char *cat = NULL, *schema = NULL, *name = NULL;
        SQLUSMALLINT type;
@@ -3529,8 +3523,10 @@
                }
                convert_to_long_ex(pv_type);
                type = (SQLUSMALLINT) Z_LVAL_PP(pv_type);
-               convert_to_string_ex(pv_cat);
-               cat = Z_STRVAL_PP(pv_cat);
+               if (Z_TYPE_PP(pv_cat) != IS_NULL) {
+                       convert_to_string_ex(pv_cat);
+                       cat = Z_STRVAL_PP(pv_cat);
+               }
                convert_to_string_ex(pv_schema);
                schema = Z_STRVAL_PP(pv_schema);
                convert_to_string_ex(pv_name);
@@ -3559,10 +3555,6 @@
                efree(result);
                RETURN_FALSE;
        }
-       
-       if (cat_len == 0) {
-               cat = NULL;
-       }
 
        rc = SQLSpecialColumns(result->stmt, 
                        type,
@@ -3614,8 +3606,10 @@
                                        &pv_name, &pv_unique, &pv_reserved) == 
FAILURE) {
                        WRONG_PARAM_COUNT;
                }
-               convert_to_string_ex(pv_cat);
-               cat = Z_STRVAL_PP(pv_cat);
+               if (Z_TYPE_PP(pv_cat) != IS_NULL) {
+                       convert_to_string_ex(pv_cat);
+                       cat = Z_STRVAL_PP(pv_cat);
+               }
                convert_to_string_ex(pv_schema);
                schema = Z_STRVAL_PP(pv_schema);
                convert_to_string_ex(pv_name);
@@ -3644,10 +3638,6 @@
                efree(result);
                RETURN_FALSE;
        }
-       
-       if (cat_len == 0) {
-               cat = NULL;
-       }
 
        rc = SQLStatistics(result->stmt, 
                        cat, SAFE_SQL_NTS(cat),
@@ -3722,10 +3712,6 @@
                efree(result);
                RETURN_FALSE;
        }
-       
-       if (cat_len == 0) {
-               cat = NULL;
-       }
 
        rc = SQLTablePrivileges(result->stmt, 
                        cat, SAFE_SQL_NTS(cat), 



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

Reply via email to