From: Sascha Schumann Date: Wed, 5 Jul 2000 01:26:22 +0000 (+0000) Subject: (PHP session_destroy) return the error condition from storage handler's X-Git-Tag: PRE_METHOD_CALL_SEPERATE_FIX_PATCH~25 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=277b0e15b8cfeb4557badecb5c269eb3ec7d333b;p=php (PHP session_destroy) return the error condition from storage handler's session_destroy method. Submitted by: juhl@eisenstein.dk --- diff --git a/ext/session/mod_files.c b/ext/session/mod_files.c index a4b7ed0a4d..c1f7ecc9ba 100644 --- a/ext/session/mod_files.c +++ b/ext/session/mod_files.c @@ -275,7 +275,9 @@ PS_DESTROY_FUNC(files) if (!_ps_files_path_create(buf, sizeof(buf), data, key)) return FAILURE; - V_UNLINK(buf); + if (V_UNLINK(buf) == -1) { + return FAILURE; + } return SUCCESS; } diff --git a/ext/session/session.c b/ext/session/session.c index 0d634f240e..5b685eadb0 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -138,7 +138,7 @@ PHP_MINFO_FUNCTION(session); static void php_rinit_session_globals(PSLS_D); static void php_rshutdown_session_globals(PSLS_D); -static void _php_session_destroy(PSLS_D); +static zend_bool _php_session_destroy(PSLS_D); zend_module_entry session_module_entry = { "session", @@ -874,18 +874,24 @@ static void _php_session_start(PSLS_D) } } -static void _php_session_destroy(PSLS_D) +static zend_bool _php_session_destroy(PSLS_D) { + zend_bool retval = SUCCESS; + if (PS(nr_open_sessions) == 0) { php_error(E_WARNING, "Trying to destroy uninitialized session"); - return; + return FAILURE; } if (PS(mod)->destroy(&PS(mod_data), PS(id)) == FAILURE) { + retval = FAILURE; php_error(E_WARNING, "Destroying the session object failed"); } + php_rshutdown_session_globals(PSLS_C); php_rinit_session_globals(PSLS_C); + + return retval; } @@ -1224,13 +1230,17 @@ PHP_FUNCTION(session_start) } /* }}} */ -/* {{{ proto void session_destroy(void) +/* {{{ proto bool session_destroy(void) Destroy the current session and all data associated with it */ PHP_FUNCTION(session_destroy) { PSLS_FETCH(); - - _php_session_destroy(PSLS_C); + + if (_php_session_destroy(PSLS_C) == SUCCESS) { + RETURN_TRUE; + } else { + RETURN_FALSE; + } } /* }}} */