From: Peter Stamfest Date: Thu, 27 Feb 2014 21:14:03 +0000 (+0100) Subject: Fix CDP init problems introduced with original add DS code X-Git-Tag: v1.5.0-rc1~131^2~25 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=af847faeaa1bad791a1978fc0362c43d5811b6ef;p=thirdparty%2Frrdtool-1.x.git Fix CDP init problems introduced with original add DS code --- diff --git a/src/rrd_modify.c b/src/rrd_modify.c index cab6cd81..d0236c21 100644 --- a/src/rrd_modify.c +++ b/src/rrd_modify.c @@ -285,6 +285,19 @@ static int rrd_modify_r(const char *infilename, int start_index_in = in.stat_head->ds_cnt * j; int start_index_out = out.stat_head->ds_cnt * out.stat_head->rra_cnt; + out.rra_def = copy_over_realloc(out.rra_def, out.stat_head->rra_cnt, + in.rra_def, j, + sizeof(rra_def_t)); + if (out.rra_def == NULL) goto done; + + // adapt row count: + out.rra_def[out.stat_head->rra_cnt].row_cnt = final_row_count; + + out.rra_ptr = copy_over_realloc(out.rra_ptr, out.stat_head->rra_cnt, + &rra_0_ptr, 0, + sizeof(rra_ptr_t)); + if (out.rra_ptr == NULL) goto done; + int ii; for (i = ii = 0 ; i < ops_cnt ; i++) { switch (ops[i]) { @@ -296,8 +309,13 @@ static int rrd_modify_r(const char *infilename, break; } case 'a': { - memcpy(out.cdp_prep + start_index_out + ii, + cdp_prep_t *cdp_prep = out.cdp_prep + start_index_out + ii; + memcpy(cdp_prep, &empty_cdp_prep, sizeof(cdp_prep_t)); + + init_cdp(&out, + out.rra_def + out.stat_head->rra_cnt, + cdp_prep); ii++; break; } @@ -309,19 +327,6 @@ static int rrd_modify_r(const char *infilename, } } - out.rra_def = copy_over_realloc(out.rra_def, out.stat_head->rra_cnt, - in.rra_def, j, - sizeof(rra_def_t)); - if (out.rra_def == NULL) goto done; - - // adapt row count: - out.rra_def[out.stat_head->rra_cnt].row_cnt = final_row_count; - - out.rra_ptr = copy_over_realloc(out.rra_ptr, out.stat_head->rra_cnt, - &rra_0_ptr, 0, - sizeof(rra_ptr_t)); - if (out.rra_ptr == NULL) goto done; - total_out_rra_rows += out.rra_def[out.stat_head->rra_cnt].row_cnt; out.stat_head->rra_cnt++; @@ -343,7 +348,6 @@ static int rrd_modify_r(const char *infilename, char *all_data = NULL; - /* prepare space to read data in */ all_data = realloc(all_data, total_in_rra_rows * in.stat_head->ds_cnt