cvs: php4 /ext/session session.c
| From: | Stanislav Malyshev | Date: | Thu, 29 Jun 2000 13:09:27 +0000 |
| Subject: | cvs: php4 /ext/session session.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-543@lists.php.net to get a copy of this message | ||
stas Thu Jun 29 06:09:27 2000 EDT
Modified files:
/php4/ext/session session.c
Log:
Try to fix #5271 - crash when $HTTP_SESSION_VARS is already defined
via "global"
# I'm not sure it's fastest fix possible, but at least it should remove the
# crash
Index: php4/ext/session/session.c
diff -u php4/ext/session/session.c:1.149 php4/ext/session/session.c:1.150
--- php4/ext/session/session.c:1.149 Tue Jun 27 16:09:49 2000
+++ php4/ext/session/session.c Thu Jun 29 06:09:27 2000
@@ -375,16 +375,21 @@
static void php_session_track_init(void)
{
+ zval **old_vars = NULL;
PSLS_FETCH();
ELS_FETCH();
- if (zend_hash_find(&EG(symbol_table), "HTTP_SESSION_VARS",
sizeof("HTTP_SESSION_VARS"),
- (void **)&PS(http_session_vars)) == FAILURE || PS(http_session_vars)->type !=
IS_ARRAY) {
- MAKE_STD_ZVAL(PS(http_session_vars));
- array_init(PS(http_session_vars));
- ZEND_SET_GLOBAL_VAR_WITH_LENGTH("HTTP_SESSION_VARS",
sizeof("HTTP_SESSION_VARS"), PS(http_session_vars), 1, 0);
- } else
- zend_hash_clean(PS(http_session_vars)->value.ht);
+ if (zend_hash_find(&EG(symbol_table), "HTTP_SESSION_VARS",
sizeof("HTTP_SESSION_VARS"), (void **)&old_vars) == SUCCESS &&
(*old_vars)->type == IS_ARRAY) {
+ PS(http_session_vars) = *old_vars;
+ zend_hash_clean(PS(http_session_vars)->value.ht);
+ } else {
+ if(old_vars) {
+ zend_hash_del(&EG(symbol_table), "HTTP_SESSION_VARS",
sizeof("HTTP_SESSION_VARS"));
+ }
+ MAKE_STD_ZVAL(PS(http_session_vars));
+ array_init(PS(http_session_vars));
+ ZEND_SET_GLOBAL_VAR_WITH_LENGTH("HTTP_SESSION_VARS",
sizeof("HTTP_SESSION_VARS"), PS(http_session_vars), 1, 0);
+ }
}
static char *_php_session_encode(int *newlen PSLS_DC)