From: Thies C. Arntzen Date: Sat, 15 Jan 2000 13:35:06 +0000 (+0000) Subject: in an rshutdown function we should not access the regular_list like this. X-Git-Tag: BEFORE_PRE_SHUTDOWN_REVERSE_PATCH~23 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b42603eee68d8e0f2546052016b0009a3490ac9e;p=php in an rshutdown function we should not access the regular_list like this. --- 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; }