From b42603eee68d8e0f2546052016b0009a3490ac9e Mon Sep 17 00:00:00 2001 From: "Thies C. Arntzen" Date: Sat, 15 Jan 2000 13:35:06 +0000 Subject: [PATCH] in an rshutdown function we should not access the regular_list like this. --- ext/odbc/php_odbc.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 691f7765e5..aaa31503fc 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -410,6 +410,17 @@ PHP_MINIT_FUNCTION(odbc) return SUCCESS; } +void _php_odbc_shutdown(void *data) +{ + ELS_FETCH(); + + /* Close all statements before connection */ + + /* this is not the nice way of doing it - we should use reference counting + of the parent handles */ + + zend_hash_apply(&EG(regular_list), (int (*)(void *)) _odbc_stmt_cleanup); +} PHP_RINIT_FUNCTION(odbc) { @@ -417,15 +428,14 @@ PHP_RINIT_FUNCTION(odbc) ODBCG(defConn) = -1; ODBCG(num_links) = ODBCG(num_persistent); + + php_register_pre_request_shutdown(_php_odbc_shutdown, NULL); + return SUCCESS; } PHP_RSHUTDOWN_FUNCTION(odbc) { - ELS_FETCH(); - - /* Close all statements before connection */ - zend_hash_apply(&EG(regular_list), (int (*)(void *)) _odbc_stmt_cleanup); return SUCCESS; } -- 2.40.0