From 629d7cf43f5ac1be56e5205cc6f6be2f43d1d963 Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Tue, 6 Feb 2007 00:01:18 +0000 Subject: Fixed Bug #40274 (Sessions fail with numeric root keys). --- ext/session/php_session.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'ext/session') diff --git a/ext/session/php_session.h b/ext/session/php_session.h index f0e365cffb..0ad48e8fa8 100644 --- a/ext/session/php_session.h +++ b/ext/session/php_session.h @@ -223,11 +223,16 @@ PHPAPI const ps_serializer *_php_find_ps_serializer(char *name TSRMLS_DC); #define PS_ENCODE_LOOP(code) do { \ HashTable *_ht = Z_ARRVAL_P(PS(http_session_vars)); \ + int key_type; \ \ for (zend_hash_internal_pointer_reset(_ht); \ - zend_hash_get_current_key_ex(_ht, &key, &key_length, &num_key, 0, NULL) == HASH_KEY_IS_STRING; \ + (key_type = zend_hash_get_current_key_ex(_ht, &key, &key_length, &num_key, 0, NULL)) != HASH_KEY_NON_EXISTANT; \ zend_hash_move_forward(_ht)) { \ - key_length--; \ + if (key_type == HASH_KEY_IS_LONG) { \ + php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Skipping numeric key %ld.", num_key); \ + continue; \ + } \ + key_length--; \ if (php_get_session_var(key, key_length, &struc TSRMLS_CC) == SUCCESS) { \ code; \ } \ -- cgit v1.2.1