From: Nick Mathewson Date: Wed, 3 Oct 2007 04:14:54 +0000 (+0000) Subject: Fix implementation of strsep. X-Git-Tag: release-2.0.1-alpha~549 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bc7b7c249c470fe916c337b03605410f32dcd7fa;p=libevent Fix implementation of strsep. svn:r457 --- diff --git a/ChangeLog b/ChangeLog index 96880842..c36ce72c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -25,4 +25,5 @@ Changes in current version: o Make test subdirectory compile under mingw. o Fix win32 buffer.c behavior so that it is correct for sockets (which do not like ReadFile and WriteFile). o Make the test.sh script run unit tests for the evpoll method. - o Make the entire evdns.h header enclosed in "extern C" as appropriate. \ No newline at end of file + o Make the entire evdns.h header enclosed in "extern C" as appropriate. + o Fix implementation of strsep on platforms that lack it diff --git a/http.c b/http.c index 098680dd..d0e458e4 100644 --- a/http.c +++ b/http.c @@ -138,17 +138,21 @@ void evhttp_read(int, short, void *); void evhttp_write(int, short, void *); #ifndef HAVE_STRSEP +/* strsep replacement for platforms that lack it. Only works if + * del is one character long. */ static char * strsep(char **s, const char *del) { char *d, *tok; + assert(strlen(del) == 1); if (!s || !*s) return NULL; tok = *s; d = strstr(tok, del); - if (d) - *s = d + strlen(del); - else + if (d) { + *d = '\0'; + *s = d + 1; + } else *s = NULL; return tok; }