]> granicus.if.org Git - graphviz/commitdiff
Improve warning message in color list for case when user uses semicolor rather than...
authorEmden R. Gansner <erg@emdenrg.net>
Fri, 11 Oct 2019 20:41:14 +0000 (16:41 -0400)
committerEmden R. Gansner <erg@emdenrg.net>
Fri, 11 Oct 2019 20:41:14 +0000 (16:41 -0400)
separate colors;
prevent call to freeSegs if segs == NULL

lib/common/emit.c

index a6d8f869cb5e705fa352bcdf6379daeaad1c8900..29d9a19be0756dc7816f4f9a867667ff320cbc8c 100644 (file)
@@ -456,7 +456,7 @@ static double getSegLen (char* s)
 
 /* parseSegs:
  * Parse string of form color;float:color;float:...:color;float:color
- * where the floats are optional, nonnegative, sum to <= 1.
+ * where the semicolon-floats are optional, nonnegative, sum to <= 1.
  * Store the values in an array of colorseg_t's and return the array in psegs.
  * If nseg == 0, count the number of colors.
  * If the sum of the floats does not equal 1, the remainder is equally distributed
@@ -514,7 +514,8 @@ parseSegs (char* clrs, int nseg, colorsegs_t** psegs)
        }
        else {
            if (doWarn) {
-               agerr (AGERR, "Illegal length value in \"%s\" color attribute ", clrs);
+               agerr (AGERR, "Illegal value in \"%s\" color attribute; float expected after ';'\n",
+                    clrs);
                doWarn = 0;
                rval = 2;
            }
@@ -4230,7 +4231,7 @@ boolean findStopColor (char* colorlist, char* clrs[2], float* frac)
     rv = parseSegs (colorlist, 0, &segs);
     if (rv || (segs->numc < 2) || (segs->segs[0].color == NULL)) {
        clrs[0] = NULL;
-       freeSegs (segs);
+       if (segs) freeSegs (segs);
        return FALSE;
     }