summaryrefslogtreecommitdiff
path: root/ext/session
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2006-02-21 20:12:43 +0000
committerDmitry Stogov <dmitry@php.net>2006-02-21 20:12:43 +0000
commit0f1209ab3d1f9ec0f1ea7295fa987ba4dea270c8 (patch)
treef599e4188e236ccf04fa0f74518e6c10bbcb5d14 /ext/session
parentfca6eecbe944effb6374e63271a008947b266e64 (diff)
downloadphp-git-0f1209ab3d1f9ec0f1ea7295fa987ba4dea270c8.tar.gz
Portable unicode string API:
- use the same type (int) for zval.value.usr.len and zval.value.str.len - use union "zstr" as char*/UChar* mixture instead of void* - Z_UNISTR() and Z_UNILEN() no longer check for Z_TYPE() - nuke int32_t from ZE (not finisned)
Diffstat (limited to 'ext/session')
-rw-r--r--ext/session/php_session.h4
-rw-r--r--ext/session/session.c22
2 files changed, 14 insertions, 12 deletions
diff --git a/ext/session/php_session.h b/ext/session/php_session.h
index bc3dbcbf7e..f2b70d4ed7 100644
--- a/ext/session/php_session.h
+++ b/ext/session/php_session.h
@@ -211,7 +211,7 @@ PHPAPI void php_session_start(TSRMLS_D);
#define PS_ENCODE_VARS \
- char *key; \
+ zstr key; \
uint key_length; \
ulong num_key; \
zval **struc;
@@ -223,7 +223,7 @@ PHPAPI void php_session_start(TSRMLS_D);
zend_hash_get_current_key_ex(_ht, &key, &key_length, &num_key, 0, NULL) == HASH_KEY_IS_STRING; \
zend_hash_move_forward(_ht)) { \
key_length--; \
- if (php_get_session_var(key, key_length, &struc TSRMLS_CC) == SUCCESS) { \
+ if (php_get_session_var(key.s, key_length, &struc TSRMLS_CC) == SUCCESS) { \
code; \
} \
} \
diff --git a/ext/session/session.c b/ext/session/session.c
index 04402cbb16..0e8f7a3ed1 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -401,13 +401,13 @@ PS_SERIALIZER_ENCODE_FUNC(php_binary)
PS_ENCODE_LOOP(
if (key_length > PS_BIN_MAX) continue;
smart_str_appendc(&buf, (unsigned char) key_length);
- smart_str_appendl(&buf, key, key_length);
+ smart_str_appendl(&buf, key.s, key_length);
php_var_serialize(&buf, struc, &var_hash TSRMLS_CC);
} else {
if (key_length > PS_BIN_MAX) continue;
smart_str_appendc(&buf, (unsigned char) (key_length & PS_BIN_UNDEF));
- smart_str_appendl(&buf, key, key_length);
+ smart_str_appendl(&buf, key.s, key_length);
);
if (newlen) *newlen = buf.len;
@@ -465,8 +465,8 @@ PS_SERIALIZER_ENCODE_FUNC(php)
PHP_VAR_SERIALIZE_INIT(var_hash);
PS_ENCODE_LOOP(
- smart_str_appendl(&buf, key, (unsigned char) key_length);
- if (memchr(key, PS_DELIMITER, key_length)) {
+ smart_str_appendl(&buf, key.s, (unsigned char) key_length);
+ if (memchr(key.s, PS_DELIMITER, key_length)) {
PHP_VAR_SERIALIZE_DESTROY(var_hash);
smart_str_free(&buf);
return FAILURE;
@@ -476,7 +476,7 @@ PS_SERIALIZER_ENCODE_FUNC(php)
php_var_serialize(&buf, struc, &var_hash TSRMLS_CC);
} else {
smart_str_appendc(&buf, PS_UNDEF_MARKER);
- smart_str_appendl(&buf, key, key_length);
+ smart_str_appendl(&buf, key.s, key_length);
smart_str_appendc(&buf, PS_DELIMITER);
);
@@ -775,7 +775,7 @@ static void php_session_initialize(TSRMLS_D)
static int migrate_global(HashTable *ht, HashPosition *pos TSRMLS_DC)
{
- char *str;
+ zstr str;
uint str_len;
ulong num_key;
int n;
@@ -786,10 +786,12 @@ static int migrate_global(HashTable *ht, HashPosition *pos TSRMLS_DC)
switch (n) {
case HASH_KEY_IS_STRING:
- if (zend_hash_find(&EG(symbol_table), str, str_len,
+ case HASH_KEY_IS_UNICODE:
+ if (zend_u_hash_find(&EG(symbol_table), n, str, str_len,
(void **) &val) == SUCCESS
&& val && Z_TYPE_PP(val) != IS_NULL) {
- ZEND_SET_SYMBOL_WITH_LENGTH(ht, str, str_len, *val,
+ /* FIXME: Unicode support??? */
+ ZEND_SET_SYMBOL_WITH_LENGTH(ht, str.s, str_len, *val,
(*val)->refcount + 1 , 1);
ret = 1;
}
@@ -1725,7 +1727,7 @@ PHP_FUNCTION(session_unset)
if (PG(register_globals)) {
uint str_len;
- char *str;
+ zstr str;
ulong num_key;
HashPosition pos;
@@ -1733,7 +1735,7 @@ PHP_FUNCTION(session_unset)
while (zend_hash_get_current_key_ex(ht, &str, &str_len, &num_key,
0, &pos) == HASH_KEY_IS_STRING) {
- zend_delete_global_variable(str, str_len-1 TSRMLS_CC);
+ zend_delete_global_variable(str.s, str_len-1 TSRMLS_CC);
zend_hash_move_forward_ex(ht, &pos);
}
}