]> granicus.if.org Git - graphviz/commitdiff
Fix bug in split function
authorEmden R. Gansner <erg@alum.mit.edu>
Thu, 19 Dec 2013 22:14:58 +0000 (17:14 -0500)
committerEmden R. Gansner <erg@alum.mit.edu>
Thu, 19 Dec 2013 22:14:58 +0000 (17:14 -0500)
lib/expr/exeval.c

index 4ed1eeeae6df3e3087eba521db12a941d2c25795..d2d2f886f0b2cd88e2d7346db048cf9f1245bd9c 100644 (file)
@@ -713,16 +713,20 @@ exsplit(Expr_t * ex, register Exnode_t * expr, void *env)
        v.integer = 0;
        while (*str) {
                sz = strspn (str, seps);
-               for (i = 0; i < sz; i++) {
-               addItem (arr, v, "");
-               v.integer++;
+           if (sz) {
+                       if (v.integer == 0) {  /* initial separator => empty field */
+                       addItem (arr, v, "");
+                       v.integer++;
+                       }
+                       for (i = 1; i < sz; i++) {
+                       addItem (arr, v, "");
+                       v.integer++;
+                       }
                }
                str += sz;
-               if (*str == '\0') {
-               if (v.integer == sz) {  /* only separators */
-                               addItem (arr, v, "");
-                               v.integer++;
-               }
+               if (*str == '\0') { /* terminal separator => empty field */
+                       addItem (arr, v, "");
+                       v.integer++;
                break;
                }
                sz = strcspn (str, seps);