httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ruediger Pluem <rpl...@apache.org>
Subject Re: svn commit: r1070075 - in /httpd/httpd/trunk: CHANGES modules/cache/cache_util.c
Date Mon, 14 Feb 2011 07:22:01 GMT


On 02/13/2011 11:18 PM, Graham Leggett wrote:
> On 13 Feb 2011, at 5:22 PM, Ruediger Pluem wrote:
> 
>>> +    /* skip characters in sep (will terminate at '\0') */
>>> +    while (*str && strchr(sep, *str)) {
>>> +        ++str;
>>> +    }
>>> +
>>> +    if (!*str) {        /* no more tokens */
>>> +        return NULL;
>>> +    }
>>> +
>>> +    token = str;
>>> +
>>> +    /* skip valid token characters to terminate token and
>>> +     * prepare for the next call (will terminate at '\0)
>>> +     * on the way, ignore all quoted strings, and within
>>> +     * quoted strings, escaped characters.
>>> +     */
>>> +    *last = token + 1;
>>
>> What happens if str is supplied as "a, b"?
>> I mean why token + 1 and not token?
> 
> I guess it's because we know *token isn't a separator, so there is no
> point checking if it is one a second time.

*token might not be a separator, but it might be ".

> 
> The same pattern exists in apr_strtok.c:
> 
> https://svn.apache.org/repos/asf/apr/apr/trunk/strings/apr_strtok.c

Maybe, but that doesn't mean that it is correct :-).

IMHO "a, b" would result in the two tokens

a
b"

which would be wrong. The result should be one token:

"a, b"


Regards

RĂ¼diger


Mime
View raw message