Another fix for the strchr() transition: Check for NULL arguments.
authormarkus schnalke <meillo@marmaro.de>
Wed, 4 Jan 2012 13:46:58 +0000 (14:46 +0100)
committermarkus schnalke <meillo@marmaro.de>
Wed, 4 Jan 2012 13:46:58 +0000 (14:46 +0100)
Is now the point to reintroduce the brkany() helper? Hmm...

sbr/brkstring.c

index da42d61..32dd37f 100644 (file)
@@ -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");