]> granicus.if.org Git - php/commitdiff
Fix memory leak in odbc_fetch_(array|object).
authorWez Furlong <wez@php.net>
Wed, 30 Apr 2003 10:45:45 +0000 (10:45 +0000)
committerWez Furlong <wez@php.net>
Wed, 30 Apr 2003 10:45:45 +0000 (10:45 +0000)
Enable those functions for IBM DB2.

ext/odbc/php_odbc.c
ext/odbc/php_odbc.h

index a1eeeb27cbd8b49aa5579f6e0c55196ea3b26ead..bd08a13daaf689c70b6ebb596c356bdde7ff2160 100644 (file)
@@ -84,7 +84,7 @@ function_entry odbc_functions[] = {
        PHP_FE(odbc_error, NULL)
        PHP_FE(odbc_errormsg, NULL)
        PHP_FE(odbc_exec, NULL)
-#if defined(HAVE_DBMAKER) || defined(PHP_WIN32)
+#ifdef PHP_ODBC_HAVE_FETCH_HASH
        PHP_FE(odbc_fetch_array, NULL)
        PHP_FE(odbc_fetch_object, NULL)
 #endif
@@ -1328,7 +1328,7 @@ PHP_FUNCTION(odbc_exec)
 }
 /* }}} */
 
-#if defined(HAVE_DBMAKER) || defined(PHP_WIN32)
+#ifdef PHP_ODBC_HAVE_FETCH_HASH
 #define ODBC_NUM  1
 #define ODBC_OBJECT  2
 
@@ -1378,8 +1378,6 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type)
                RETURN_FALSE;
        }
 
-       array_init(return_value);
-
 #ifdef HAVE_SQL_EXTENDED_FETCH
        if (result->fetch_abs) {
                if (rownum > 0)
@@ -1394,6 +1392,8 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type)
                RETURN_FALSE;
        }
        
+       array_init(return_value);
+       
 #ifdef HAVE_SQL_EXTENDED_FETCH
        if (rownum > 0 && result->fetch_abs)
                result->fetched = rownum;
@@ -1402,8 +1402,7 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type)
                result->fetched++;
 
        for(i = 0; i < result->numcols; i++) {
-               ALLOC_ZVAL(tmp);
-               tmp->refcount = 1;
+               ALLOC_INIT_ZVAL(tmp);
                Z_TYPE_P(tmp) = IS_STRING;
                Z_STRLEN_P(tmp) = 0;
                sql_c_type = SQL_C_CHAR;
index 6b5140295e26a9f912a0e6b09bb2062201324705..b03654374a35d50727bf803b00ed00b71e9c343b 100644 (file)
 extern zend_module_entry odbc_module_entry;
 #define odbc_module_ptr &odbc_module_entry
 
+#if defined(HAVE_DBMAKER) || defined(PHP_WIN32) || defined(HAVE_IBMDB2)
+# define PHP_ODBC_HAVE_FETCH_HASH 1
+#endif
+
 /* user functions */
 PHP_MINIT_FUNCTION(odbc);
 PHP_MSHUTDOWN_FUNCTION(odbc);
@@ -54,7 +58,7 @@ PHP_FUNCTION(odbc_data_source);
 PHP_FUNCTION(odbc_do);
 PHP_FUNCTION(odbc_exec);
 PHP_FUNCTION(odbc_execute);
-#if defined(HAVE_DBMAKER) || defined(PHP_WIN32)
+#ifdef PHP_ODBC_HAVE_FETCH_HASH
 PHP_FUNCTION(odbc_fetch_array);
 PHP_FUNCTION(odbc_fetch_object);
 #endif