diff --git a/src/rrd_update.c b/src/rrd_update.c
index 45014ebad7bdd8808f0d3bf6ab9b5d5504af9631..1dba9ed6c8a2ed4733ba00705402a03074eb6acc 100644 (file)
--- a/src/rrd_update.c
+++ b/src/rrd_update.c
/*****************************************************************************
- * RRDtool 1.4.3 Copyright by Tobi Oetiker, 1997-2010
+ * RRDtool 1.4.8 Copyright by Tobi Oetiker, 1997-2013
* Copyright by Florian Forster, 2008
*****************************************************************************
* rrd_update.c RRD Update Function
*****************************************************************************
- * $Id: rrd_update.c 2042 2010-03-22 16:05:55Z oetiker $
+ * $Id$
*****************************************************************************/
#include "rrd_tool.h"
{ /* try to connect to rrdcached */
int status = rrdc_connect(opt_daemon);
- if (status != 0) return status;
+ if (status != 0) {
+ rc = status;
+ goto out;
+ }
}
if ((tmplt != NULL) && rrdc_is_connected(opt_daemon))
*current_time = tmp_time.tv_sec;
*current_time_usec = tmp_time.tv_usec;
} else {
- old_locale = setlocale(LC_NUMERIC, "C");
+ old_locale = setlocale(LC_NUMERIC, NULL);
+ setlocale(LC_NUMERIC, "C");
errno = 0;
tmp = strtod(updvals[0], 0);
if (errno > 0) {
}
break;
case DST_ABSOLUTE:
- old_locale = setlocale(LC_NUMERIC, "C");
+ old_locale = setlocale(LC_NUMERIC, NULL);
+ setlocale(LC_NUMERIC, "C");
errno = 0;
pdp_new[ds_idx] = strtod(updvals[ds_idx + 1], &endptr);
if (errno > 0) {
rate = pdp_new[ds_idx] / interval;
break;
case DST_GAUGE:
- old_locale = setlocale(LC_NUMERIC, "C");
+ old_locale = setlocale(LC_NUMERIC, NULL);
+ setlocale(LC_NUMERIC, "C");
errno = 0;
pdp_new[ds_idx] =
strtod(updvals[ds_idx + 1], &endptr) * interval;
rpnp =
rpn_expand((rpn_cdefds_t *) &(rrd->ds_def[ds_idx].par[DS_cdef]));
+ if(rpnp == NULL) {
+ rpnstack_free(&rpnstack);
+ return -1;
+ }
/* substitute data values for OP_VARIABLE nodes */
for (i = 0; rpnp[i].op != OP_END; i++) {
if (rpnp[i].op == OP_VARIABLE) {
rpnstack_free(&rpnstack);
return -1;
}
+ free(rpnp);
}
/* make pdp_prep ready for the next run */
if (elapsed_pdp_st > 2) {
reset_cdp(rrd, elapsed_pdp_st, pdp_temp, last_seasonal_coef,
seasonal_coef, rra_idx, ds_idx, cdp_idx,
- current_cf);
+ (enum cf_en)current_cf);
}
}