From: Anatol Belski Date: Fri, 29 Jan 2016 14:19:40 +0000 (+0100) Subject: Merge branch 'PHP-7.0' X-Git-Tag: php-7.2.0alpha1~620^2~50 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=15ba618a694e151e6bd17f70dee0cd19084b9978;p=php Merge branch 'PHP-7.0' * PHP-7.0: fix wrong gc sequence --- 15ba618a694e151e6bd17f70dee0cd19084b9978 diff --cc ext/session/session.c index b7a1611363,d67045ed89..5f44f991c1 --- a/ext/session/session.c +++ b/ext/session/session.c @@@ -556,19 -541,21 +556,20 @@@ static void php_session_initialize(void } php_session_reset_id(); - PS(session_status) = php_session_active; - /* GC must be done before read */ - php_session_gc(); - /* Read data */ php_session_track_init(); if (PS(mod)->s_read(&PS(mod_data), PS(id), &val, PS(gc_maxlifetime)) == FAILURE) { + php_session_abort(); /* Some broken save handler implementation returns FAILURE for non-existent session ID */ /* It's better to raise error for this, but disabled error for better compatibility */ - /* - php_error_docref(NULL, E_NOTICE, "Failed to read session data: %s (path: %s)", PS(mod)->s_name, PS(save_path)); - */ + php_error_docref(NULL, E_WARNING, "Failed to read session data: %s (path: %s)", PS(mod)->s_name, PS(save_path)); + return; } + + /* GC must be done after read */ + php_session_gc(); + if (PS(session_vars)) { zend_string_release(PS(session_vars)); PS(session_vars) = NULL;