]> granicus.if.org Git - php/commitdiff
MFH, fixing close crash case on Windows
authorDan Kalowsky <kalowsky@php.net>
Sat, 17 Aug 2002 16:20:10 +0000 (16:20 +0000)
committerDan Kalowsky <kalowsky@php.net>
Sat, 17 Aug 2002 16:20:10 +0000 (16:20 +0000)
ext/odbc/php_odbc.c

index a06f4e4b4aeb5bcd75b5301988ab38d8c11672cc..a1d0581901db844a8b30d5a76428b4a18f6c8cf5 100644 (file)
@@ -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);