sas Thu Oct 3 01:53:45 2002 EDT Modified files: /php4/ext/session session.c Log: (track_init) Use is_ref/refcount parameters of SET_SYMBOL macros (save_current_state) Prevent a possible deadlock which occurs when the track vars are inaccessible Index: php4/ext/session/session.c diff -u php4/ext/session/session.c:1.326 php4/ext/session/session.c:1.327 --- php4/ext/session/session.c:1.326 Thu Oct 3 00:53:05 2002 +++ php4/ext/session/session.c Thu Oct 3 01:53:45 2002 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: session.c,v 1.326 2002/10/03 04:53:05 sas Exp $ */ +/* $Id: session.c,v 1.327 2002/10/03 05:53:45 sas Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -499,9 +499,9 @@ MAKE_STD_ZVAL(PS(http_session_vars)); array_init(PS(http_session_vars)); - - ZEND_SET_GLOBAL_VAR("HTTP_SESSION_VARS", PS(http_session_vars)); - ZEND_SET_GLOBAL_VAR("_SESSION", PS(http_session_vars)); + + ZEND_SET_GLOBAL_VAR_WITH_LENGTH("HTTP_SESSION_VARS", +sizeof("HTTP_SESSION_VARS"), PS(http_session_vars), 2, 1); + ZEND_SET_GLOBAL_VAR_WITH_LENGTH("_SESSION", sizeof("_SESSION"), +PS(http_session_vars), 2, 1); } static char *php_session_encode(int *newlen TSRMLS_DC) @@ -662,30 +662,27 @@ php_error(E_WARNING, "Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn."); } } - } else { - return; - } - if (PS(mod_data)) { - char *val; - int vallen; - - val = php_session_encode(&vallen TSRMLS_CC); - if (val) { - ret = PS(mod)->write(&PS(mod_data), PS(id), val, vallen TSRMLS_CC); - efree(val); - } else { - ret = PS(mod)->write(&PS(mod_data), PS(id), "", 0 TSRMLS_CC); + if (PS(mod_data)) { + char *val; + int vallen; + + val = php_session_encode(&vallen TSRMLS_CC); + if (val) { + ret = PS(mod)->write(&PS(mod_data), PS(id), val, +vallen TSRMLS_CC); + efree(val); + } else { + ret = PS(mod)->write(&PS(mod_data), PS(id), "", 0 +TSRMLS_CC); + } } + + if (ret == FAILURE) + php_error(E_WARNING, "Failed to write session data (%s). +Please " + "verify that the current setting of +session.save_path " + "is correct (%s)", + PS(mod)->name, + PS(save_path)); } - - if (ret == FAILURE) - php_error(E_WARNING, "Failed to write session data (%s). Please " - "verify that the current setting of session.save_path " - "is correct (%s)", - PS(mod)->name, - PS(save_path)); - if (PS(mod_data)) PS(mod)->close(&PS(mod_data) TSRMLS_CC);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php