From: Tobias Oetiker Date: Mon, 27 Jul 2015 17:52:59 +0000 (+0200) Subject: valgrind is not happy with us re-using setlocale output ... so lets strdup it X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=074becb32e5322e289e806aaa3ab51bef71da74f;p=thirdparty%2Frrdtool-1.x.git valgrind is not happy with us re-using setlocale output ... so lets strdup it --- diff --git a/src/rrd_rpncalc.c b/src/rrd_rpncalc.c index 630a94c4..8c370cc3 100644 --- a/src/rrd_rpncalc.c +++ b/src/rrd_rpncalc.c @@ -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; } diff --git a/src/rrd_tool.c b/src/rrd_tool.c index ea80d185..792e5b76 100644 --- a/src/rrd_tool.c +++ b/src/rrd_tool.c @@ -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("\n", ROOT_TAG); } setlocale(LC_NUMERIC, old_locale); + free(old_locale); } free(vtag); #else