summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSascha Schumann <sas@php.net>2001-07-25 19:02:13 +0000
committerSascha Schumann <sas@php.net>2001-07-25 19:02:13 +0000
commit00596b414e7944e83be38c194c7b36a848f5e09a (patch)
tree20e8c3d9ac1106dd3e01343d72f263c34b6168c8
parent81dd2af4659020408dc808a0f04f6c4a3a8ed1cc (diff)
downloadphp-git-00596b414e7944e83be38c194c7b36a848f5e09a.tar.gz
Get rid of memchr
-rw-r--r--ext/session/session.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/ext/session/session.c b/ext/session/session.c
index 31f6c92f5c..831866df44 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -407,7 +407,13 @@ PS_SERIALIZER_DECODE_FUNC(php)
PHP_VAR_UNSERIALIZE_INIT(var_hash);
- for (p = q = val; (p < endptr) && (q = memchr(p, PS_DELIMITER, endptr - p)); p = q) {
+ p = val;
+
+ while (p < endptr) {
+ q = p;
+ while (*q != PS_DELIMITER)
+ if (++q >= endptr) goto break_outer_loop;
+
if (p[0] == PS_UNDEF_MARKER) {
p++;
has_value = 0;
@@ -428,8 +434,11 @@ PS_SERIALIZER_DECODE_FUNC(php)
}
PS_ADD_VARL(name, namelen);
efree(name);
+
+ p = q;
}
-
+break_outer_loop:
+
PHP_VAR_UNSERIALIZE_DESTROY(var_hash);
return SUCCESS;
@@ -911,7 +920,7 @@ static void php_session_start(PSLS_D)
int nrdels = -1;
nrand = (int) (100.0*php_combined_lcg());
- if (nrand <= PS(gc_probability)) {
+ if (nrand < PS(gc_probability)) {
PS(mod)->gc(&PS(mod_data), PS(gc_maxlifetime), &nrdels);
#if 0
if (nrdels != -1)