]> granicus.if.org Git - php/commitdiff
this change should solve all problems regarding trans_sid_id and
authorHartmut Holzgraefe <hholzgra@php.net>
Fri, 23 Jun 2000 05:42:41 +0000 (05:42 +0000)
committerHartmut Holzgraefe <hholzgra@php.net>
Fri, 23 Jun 2000 05:42:41 +0000 (05:42 +0000)
"empty" href urls like "", "#name", "?param=val" ...

ext/standard/url_scanner.c
ext/standard/url_scanner.re

index c5285bb996bbb5acb52e6217773c6361ba4ec1ba..aa6374c67c382a3624b51d36fbd09f1e8e07bd83 100644 (file)
@@ -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(q<p) { p=state->start; 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';
        
index dd40b9172c207fca3397e60d155082285e3cbec3..23b672bb9c31041c30eeff503ff184dd3707f953 100644 (file)
@@ -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(q<p) { p=state->start; q=state->crs; }
 
        /* attach beginning */