summaryrefslogtreecommitdiff
path: root/ext/session/mod_mm.c
diff options
context:
space:
mode:
authorXinchen Hui <laruence@php.net>2015-02-02 14:24:41 +0800
committerXinchen Hui <laruence@php.net>2015-02-02 14:24:41 +0800
commitf1981365f5b65c48d37e17473abe8e2caab5204a (patch)
tree5e5ed925b8d199a01851d8c44ef0a10618a693bb /ext/session/mod_mm.c
parentc9e44dc2dfa7ad91fe9253378a49e9f5b057992e (diff)
downloadphp-git-f1981365f5b65c48d37e17473abe8e2caab5204a.tar.gz
Fixed #68966 (php7 make file ext/session/mod_mm.lo failed)
Diffstat (limited to 'ext/session/mod_mm.c')
-rw-r--r--ext/session/mod_mm.c35
1 files changed, 16 insertions, 19 deletions
diff --git a/ext/session/mod_mm.c b/ext/session/mod_mm.c
index 7eba7ac922..63aaf3c6f7 100644
--- a/ext/session/mod_mm.c
+++ b/ext/session/mod_mm.c
@@ -356,13 +356,13 @@ PS_READ_FUNC(mm)
/* If there is an ID and strict mode, verify existence */
if (PS(use_strict_mode)
- && ps_mm_key_exists(data, key) == FAILURE) {
+ && ps_mm_key_exists(data, key->val) == FAILURE) {
/* key points to PS(id), but cannot change here. */
if (key) {
efree(PS(id));
PS(id) = NULL;
}
- PS(id) = PS(mod)->s_create_sid((void **)&data, NULL);
+ PS(id) = PS(mod)->s_create_sid((void **)&data);
if (!PS(id)) {
return FAILURE;
}
@@ -373,12 +373,9 @@ PS_READ_FUNC(mm)
PS(session_status) = php_session_active;
}
- sd = ps_sd_lookup(data, PS(id), 0);
+ sd = ps_sd_lookup(data, PS(id)->val, 0);
if (sd) {
- *vallen = sd->datalen;
- *val = emalloc(sd->datalen + 1);
- memcpy(*val, sd->data, sd->datalen);
- (*val)[sd->datalen] = '\0';
+ *val = zend_string_init(sd->data, sd->datalen, 0);
ret = SUCCESS;
}
@@ -394,18 +391,18 @@ PS_WRITE_FUNC(mm)
mm_lock(data->mm, MM_LOCK_RW);
- sd = ps_sd_lookup(data, key, 1);
+ sd = ps_sd_lookup(data, key->val, 1);
if (!sd) {
- sd = ps_sd_new(data, key);
- ps_mm_debug(("new entry for %s\n", key));
+ sd = ps_sd_new(data, key->val);
+ ps_mm_debug(("new entry for %s\n", key->val));
}
if (sd) {
- if (vallen >= sd->alloclen) {
+ if (val->len >= sd->alloclen) {
if (data->mm) {
mm_free(data->mm, sd->data);
}
- sd->alloclen = vallen + 1;
+ sd->alloclen = val->len + 1;
sd->data = mm_malloc(data->mm, sd->alloclen);
if (!sd->data) {
@@ -415,8 +412,8 @@ PS_WRITE_FUNC(mm)
}
}
if (sd) {
- sd->datalen = vallen;
- memcpy(sd->data, val, vallen);
+ sd->datalen = val->len;
+ memcpy(sd->data, val->val, val->len);
time(&sd->ctime);
}
}
@@ -433,7 +430,7 @@ PS_DESTROY_FUNC(mm)
mm_lock(data->mm, MM_LOCK_RW);
- sd = ps_sd_lookup(data, key, 0);
+ sd = ps_sd_lookup(data, key->val, 0);
if (sd) {
ps_sd_destroy(data, sd);
}
@@ -478,16 +475,16 @@ PS_GC_FUNC(mm)
PS_CREATE_SID_FUNC(mm)
{
- char *sid;
+ zend_string *sid;
int maxfail = 3;
PS_MM_DATA;
do {
- sid = php_session_create_id((void **)&data, newlen);
+ sid = php_session_create_id((void **)&data);
/* Check collision */
- if (ps_mm_key_exists(data, sid) == SUCCESS) {
+ if (ps_mm_key_exists(data, sid->val) == SUCCESS) {
if (sid) {
- efree(sid);
+ zend_string_release(sid);
sid = NULL;
}
if (!(maxfail--)) {