From: Hartmut Holzgraefe Date: Fri, 23 Jun 2000 05:42:41 +0000 (+0000) Subject: this change should solve all problems regarding trans_sid_id and X-Git-Tag: php-4.0.1RC~46 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=234f02972733cb6ad7c1c4bdb0ee10b39b67b0aa;p=php this change should solve all problems regarding trans_sid_id and "empty" href urls like "", "#name", "?param=val" ... --- diff --git a/ext/standard/url_scanner.c b/ext/standard/url_scanner.c index c5285bb996..aa6374c67c 100644 --- a/ext/standard/url_scanner.c +++ b/ext/standard/url_scanner.c @@ -87,9 +87,13 @@ static void screw_url(lexdata *state) const char *p, *q; char c; + /* search outer limits for URI */ for(p = state->start; p < state->crs && (c = *p); p++) - if(c != '"' && c != ' ') break; + if(!isspace(c)) break; + if(c=='"') p++; + for(; p < state->crs && (c = *p); p++) + if(!isspace(c)) break; /* * we look at q-1, because q points to the character behind the last @@ -98,14 +102,20 @@ static void screw_url(lexdata *state) */ for(q = state->crs; q > state->start && (c = *(q-1)); q--) - if(c != '"' && c != ' ') break; + if(!isspace(c)) break; + if(c=='"') q--; + for(; q > state->start && (c = *(q-1)); q--) + if(!isspace(c)) break; + + if(qstart; q=state->crs; } /* attach beginning */ - ATTACH(state->start, p-state->start); /* copy old URI */ len = MIN(q - p, sizeof(buf) - 1); + php_error(E_WARNING,"%p - %p - %p - %p - %d - %d",state->start,state->crs,p,q,q-p,len); + memcpy(url, p, len); url[len] = '\0'; diff --git a/ext/standard/url_scanner.re b/ext/standard/url_scanner.re index dd40b9172c..23b672bb9c 100644 --- a/ext/standard/url_scanner.re +++ b/ext/standard/url_scanner.re @@ -88,7 +88,8 @@ static void screw_url(lexdata *state) /* search outer limits for URI */ for(p = state->start; p < state->crs && (c = *p); p++) - if(c != '"' && c != ' ') break; + if(!isspace(c)) break; + if(c=='"') p++; /* * we look at q-1, because q points to the character behind the last @@ -97,7 +98,10 @@ static void screw_url(lexdata *state) */ for(q = state->crs; q > state->start && (c = *(q-1)); q--) - if(c != '"' && c != ' ') break; + if(!isspace(c)) break; + if(c=='"') q--; + + if(qstart; q=state->crs; } /* attach beginning */