summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Kalowsky <kalowsky@php.net>2002-08-17 16:20:10 +0000
committerDan Kalowsky <kalowsky@php.net>2002-08-17 16:20:10 +0000
commitbdae3ed4a400acfa2a04d62ec1fdbbc4a5bb6470 (patch)
tree0992c2419b2ce8ccdf6ed5d11dc9e4d567487224
parent31660f3c616ea4302b88531da9b2a9175c8eb3cc (diff)
downloadphp-git-bdae3ed4a400acfa2a04d62ec1fdbbc4a5bb6470.tar.gz
MFH, fixing close crash case on Windows
-rw-r--r--ext/odbc/php_odbc.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c
index a06f4e4b4a..a1d0581901 100644
--- a/ext/odbc/php_odbc.c
+++ b/ext/odbc/php_odbc.c
@@ -211,6 +211,19 @@ static void safe_odbc_disconnect( void *handle )
static void _close_odbc_conn(zend_rsrc_list_entry *rsrc TSRMLS_DC)
{
odbc_connection *conn = (odbc_connection *)rsrc->ptr;
+ int i, nument, type;
+ void *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);
@@ -223,6 +236,19 @@ static void _close_odbc_conn(zend_rsrc_list_entry *rsrc TSRMLS_DC)
static void _close_odbc_pconn(zend_rsrc_list_entry *rsrc TSRMLS_DC)
{
odbc_connection *conn = (odbc_connection *)rsrc->ptr;
+ int i, nument, type;
+ void *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);