From 4b48c047da7d65a6d8db0b88becccdf520bd1f9c Mon Sep 17 00:00:00 2001 From: markus schnalke Date: Wed, 4 Jan 2012 14:46:58 +0100 Subject: [PATCH] Another fix for the strchr() transition: Check for NULL arguments. Is now the point to reintroduce the brkany() helper? Hmm... --- sbr/brkstring.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/sbr/brkstring.c b/sbr/brkstring.c index da42d61..32dd37f 100644 --- a/sbr/brkstring.c +++ b/sbr/brkstring.c @@ -46,7 +46,7 @@ brkstring(char *str, char *brksep, char *brkterm) } /* handle separators */ - while ((c=*s) && strchr(brksep, c)) { + while ((c=*s) && brksep && strchr(brksep, c)) { *s++ = '\0'; } @@ -54,7 +54,7 @@ brkstring(char *str, char *brksep, char *brkterm) ** we are either at the end of the string, or the ** terminator found has been found, so finish up. */ - if (!c || strchr(brkterm, c)) { + if (!c || (brkterm && strchr(brkterm, c))) { *s = '\0'; broken[i] = NULL; return broken; @@ -62,8 +62,13 @@ brkstring(char *str, char *brksep, char *brkterm) /* set next start addr and walk over word */ broken[i] = s; - while ((c=*++s) && !strchr(brksep, c) && !strchr(brkterm, c)) { - continue; + while ((c = *++s)) { + if (brksep && strchr(brksep, c)) { + break; + } + if (brkterm && strchr(brkterm, c)) { + break; + } } } adios("brkstring()", "reached unreachable point"); -- 1.7.10.4