]> git.ipfire.org Git - thirdparty/rrdtool-1.x.git/commitdiff
valgrind is not happy with us re-using setlocale output ... so lets strdup it
authorTobias Oetiker <tobi@oetiker.ch>
Mon, 27 Jul 2015 17:52:59 +0000 (19:52 +0200)
committerTobias Oetiker <tobi@oetiker.ch>
Mon, 27 Jul 2015 17:52:59 +0000 (19:52 +0200)
src/rrd_rpncalc.c
src/rrd_tool.c

index 630a94c49c7148ce17a3738a1eee3ebb11fef851..8c370cc36251ff0ca5f6061986110d7e3bde540b 100644 (file)
@@ -299,7 +299,7 @@ rpnp_t   *rpn_parse(
     char      vname[MAX_VNAME_LEN + 10];
     char     *old_locale;
 
-    old_locale = setlocale(LC_NUMERIC, NULL);
+    old_locale = strdup(setlocale(LC_NUMERIC, NULL));
     setlocale(LC_NUMERIC, "C");
 
     rpnp = NULL;
@@ -309,6 +309,7 @@ rpnp_t   *rpn_parse(
         if ((rpnp = (rpnp_t *) rrd_realloc(rpnp, (++steps + 2) *
                                            sizeof(rpnp_t))) == NULL) {
             setlocale(LC_NUMERIC, old_locale);
+            free(old_locale);
             return NULL;
         }
 
@@ -399,6 +400,7 @@ rpnp_t   *rpn_parse(
         else {
             rrd_set_error("don't undestand '%s'",expr);
             setlocale(LC_NUMERIC, old_locale);
+            free(old_locale);
             free(rpnp);
             return NULL;
         }
@@ -409,12 +411,14 @@ rpnp_t   *rpn_parse(
             expr++;
         else {
             setlocale(LC_NUMERIC, old_locale);
+            free(old_locale);
             free(rpnp);
             return NULL;
         }
     }
     rpnp[steps + 1].op = OP_END;
     setlocale(LC_NUMERIC, old_locale);
+    free(old_locale);
     return rpnp;
 }
 
index ea80d185a6a2c3e832fe43e6f98a49a7a8d5195d..792e5b76a8997c47a5e2ebe3d3ecd702d06aff96 100644 (file)
@@ -726,7 +726,7 @@ int HandleInputLine(
         if (rrd_xport
             (argc - 1, &argv[1], &xxsize, &start, &end, &step, &col_cnt,
              &legend_v, &data) == 0) {
-            char *old_locale = setlocale(LC_NUMERIC,NULL);
+            char *old_locale = strdup(setlocale(LC_NUMERIC,NULL));
             setlocale(LC_NUMERIC, "C");
             row_cnt = (end - start) / step;
             ptr = data;
@@ -842,6 +842,7 @@ int HandleInputLine(
                 printf("</%s>\n", ROOT_TAG);
             }
             setlocale(LC_NUMERIC, old_locale);
+            free(old_locale);
         }
         free(vtag);
 #else