summaryrefslogtreecommitdiff
path: root/ext/odbc/php_odbc.c
diff options
context:
space:
mode:
authorDan Kalowsky <kalowsky@php.net>2002-08-13 23:48:05 +0000
committerDan Kalowsky <kalowsky@php.net>2002-08-13 23:48:05 +0000
commit2f1b6397bcdd4cce1c17ecaaa3ff4f0fe3bcafc0 (patch)
treef6d80e5682bed2db7e93ba0987e00a0be0232e79 /ext/odbc/php_odbc.c
parent19e42a2ed3176173fe25ad9f9dc3b24ca2c8ae45 (diff)
downloadphp-git-2f1b6397bcdd4cce1c17ecaaa3ff4f0fe3bcafc0.tar.gz
Fix for Bug #17572
Diffstat (limited to 'ext/odbc/php_odbc.c')
-rw-r--r--ext/odbc/php_odbc.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c
index be52ab4b64..e10f8dad38 100644
--- a/ext/odbc/php_odbc.c
+++ b/ext/odbc/php_odbc.c
@@ -211,8 +211,23 @@ static void safe_odbc_disconnect( void *handle )
*/
static void _close_odbc_conn(zend_rsrc_list_entry *rsrc TSRMLS_DC)
{
+ int i, nument, type;
+ void *ptr;
+ odbc_result *res;
+
odbc_connection *conn = (odbc_connection *)rsrc->ptr;
+ nument = zend_hash_next_free_element(&EG(regular_list));
+ for(i = 1; i < nument; i++) {
+ ptr = zend_list_find(i, &type);
+ if (ptr && (type == le_result)) {
+ res = (odbc_result *)ptr;
+ if (res->conn_ptr == conn) {
+ zend_list_delete(i);
+ }
+ }
+ }
+
safe_odbc_disconnect(conn->hdbc);
SQLFreeConnect(conn->hdbc);
SQLFreeEnv(conn->henv);
@@ -225,7 +240,21 @@ static void _close_odbc_conn(zend_rsrc_list_entry *rsrc TSRMLS_DC)
*/
static void _close_odbc_pconn(zend_rsrc_list_entry *rsrc TSRMLS_DC)
{
+ int i, nument, type;
+ void *ptr;
+ odbc_result *res;
odbc_connection *conn = (odbc_connection *)rsrc->ptr;
+
+ nument = zend_hash_next_free_element(&EG(regular_list));
+ for(i = 1; i < nument; i++) {
+ ptr = zend_list_find(i, &type);
+ if (ptr && (type == le_result)) {
+ res = (odbc_result *)ptr;
+ if (res->conn_ptr == conn) {
+ zend_list_delete(i);
+ }
+ }
+ }
safe_odbc_disconnect(conn->hdbc);
SQLFreeConnect(conn->hdbc);