Code

* replaced strtok with strtok_r for thread safety
authoroetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa>
Wed, 6 Feb 2008 00:10:33 +0000 (00:10 +0000)
committeroetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa>
Wed, 6 Feb 2008 00:10:33 +0000 (00:10 +0000)
* fixed im initialization broken after the introduction of dashes ...

git-svn-id: svn://svn.oetiker.ch/rrdtool/trunk@1279 a5681a0c-68f1-0310-ab6d-d61299d08faa

program/src/rrd_graph.c
program/src/rrd_graph_helper.c

index 8c118682f5ecb32245b942e99e570722e2e5a7a1..501db48da41e5e3d245a35dc205335a77572b930 100644 (file)
@@ -3450,6 +3450,9 @@ int gdes_alloc(
     im->gdes[im->gdes_c - 1].rpnp = NULL;
     im->gdes[im->gdes_c - 1].p_dashes = NULL;
     im->gdes[im->gdes_c - 1].shift = 0.0;
+    im->gdes[im->gdes_c - 1].dash = 0;
+    im->gdes[im->gdes_c - 1].ndash = 0;
+    im->gdes[im->gdes_c - 1].offset = 0;
     im->gdes[im->gdes_c - 1].col.red = 0.0;
     im->gdes[im->gdes_c - 1].col.green = 0.0;
     im->gdes[im->gdes_c - 1].col.blue = 0.0;
index cac3d7a6e56dda44977f280a8c0abc74b5559642..44f2c173f359782be8bdc74e28a9b23a6ead02f8 100644 (file)
@@ -791,13 +791,14 @@ int rrd_parse_PVHLAST(
             char      csv[64];
             char     *pch;
             float     dsh;
-
-            strcpy(csv, tmpstr);
             int       count = 0;
+            char     *saveptr;
 
-            pch = strtok(tmpstr, ",");
+            strcpy(csv, tmpstr);
+            
+            pch = strtok_r(tmpstr, ",",&saveptr);
             while (pch != NULL) {
-                pch = strtok(NULL, ",");
+                pch = strtok_r(NULL, ",",&saveptr);
                 count++;
             }
             dprintf("- %d dash value(s) found: ", count);
@@ -805,7 +806,7 @@ int rrd_parse_PVHLAST(
                 gdp->dash = 1;
                 gdp->ndash = count;
                 gdp->p_dashes = (double *) malloc(sizeof(double) * count);
-                pch = strtok(csv, ",");
+                pch = strtok_r(csv, ",",&saveptr);
                 count = 0;
                 while (pch != NULL) {
                     if (sscanf(pch, "%f", &dsh)) {
@@ -813,7 +814,7 @@ int rrd_parse_PVHLAST(
                         dprintf("%.1f ", gdp->p_dashes[count]);
                         count++;
                     }
-                    pch = strtok(NULL, ",");
+                    pch = strtok_r(NULL, ",",&saveptr);
                 }
                 dprintf("\n");
             } else