diff options
author | Dan Kalowsky <kalowsky@php.net> | 2002-08-17 16:20:10 +0000 |
---|---|---|
committer | Dan Kalowsky <kalowsky@php.net> | 2002-08-17 16:20:10 +0000 |
commit | bdae3ed4a400acfa2a04d62ec1fdbbc4a5bb6470 (patch) | |
tree | 0992c2419b2ce8ccdf6ed5d11dc9e4d567487224 | |
parent | 31660f3c616ea4302b88531da9b2a9175c8eb3cc (diff) | |
download | php-git-bdae3ed4a400acfa2a04d62ec1fdbbc4a5bb6470.tar.gz |
MFH, fixing close crash case on Windows
-rw-r--r-- | ext/odbc/php_odbc.c | 26 |
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); |