X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Frrd_rpncalc.c;h=7953320f084820349345a38e55b0fba2d8cfdb8d;hb=bb83aaeeebc765f2888f23d109343b5af5d634ab;hp=717ad42f5fc5ef8b96ff2e9c7c80ddcc9bf8cc9b;hpb=5b16d46cb37b99d50005603382c7b0fa11ff4347;p=rrdtool.git diff --git a/src/rrd_rpncalc.c b/src/rrd_rpncalc.c index 717ad42..7953320 100644 --- a/src/rrd_rpncalc.c +++ b/src/rrd_rpncalc.c @@ -759,7 +759,7 @@ short rpn_calc( } break; case OP_TREND: - case OP_TRENDNAN: + case OP_TRENDNAN: stackunderflow(1); if ((rpi < 2) || (rpnp[rpi - 2].op != OP_VARIABLE)) { rrd_set_error("malformed trend arguments"); @@ -769,23 +769,24 @@ short rpn_calc( time_t step = (time_t) rpnp[rpi - 2].step; if (output_idx > (int) ceil((float) dur / (float) step)) { - int ignorenan = (rpnp[rpi].op == OP_TREND); - double accum = 0.0; - int i = 0; - int count = 0; - - do { - double val = - rpnp[rpi - 2].data[rpnp[rpi - 2].ds_cnt * i--]; - if (ignorenan || !isnan(val)) { - accum += val; - ++count; - } - - dur -= step; - } while (dur > 0); - - rpnstack -> s[--stptr] = (count == 0) ? DNAN : (accum / count); + int ignorenan = (rpnp[rpi].op == OP_TREND); + double accum = 0.0; + int i = 0; + int count = 0; + + do { + double val = + rpnp[rpi - 2].data[rpnp[rpi - 2].ds_cnt * i--]; + if (ignorenan || !isnan(val)) { + accum += val; + ++count; + } + + dur -= step; + } while (dur > 0); + + rpnstack->s[--stptr] = + (count == 0) ? DNAN : (accum / count); } else rpnstack->s[--stptr] = DNAN; }