X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_rpncalc.c;h=2773ec381576061128829425b385b7480df5f9e7;hb=a5eb18ad8c70e530a2e28ed435a0f52da0f5bee0;hp=1f86f2eb02fc50c93f284a806981bb996ca13a0a;hpb=d7be1cb13eb46f173d994d2f9d71b70e89087f1f;p=rrdtool.git diff --git a/src/rrd_rpncalc.c b/src/rrd_rpncalc.c index 1f86f2e..2773ec3 100644 --- a/src/rrd_rpncalc.c +++ b/src/rrd_rpncalc.c @@ -1,12 +1,12 @@ /**************************************************************************** - * RRDtool 1.2.99907080300 Copyright by Tobi Oetiker, 1997-2007 + * RRDtool 1.3rc8 Copyright by Tobi Oetiker, 1997-2008 **************************************************************************** * rrd_rpncalc.c RPN calculator functions ****************************************************************************/ #include "rrd_tool.h" #include "rrd_rpncalc.h" -#include "rrd_graph.h" +// #include "rrd_graph.h" #include #include @@ -547,14 +547,15 @@ short rpn_calc( break; case OP_ADDNAN: stackunderflow(1); - if (isnan(rpnstack->s[stptr - 1])) { - rpnstack->s[stptr - 1] = rpnstack->s[stptr]; - } else if (isnan(rpnstack->s[stptr])) { - //rpnstack->s[stptr - 1] = rpnstack->s[stptr - 1]; - } else { - rpnstack->s[stptr - 1] = rpnstack->s[stptr - 1] - + rpnstack->s[stptr]; - } + if (isnan(rpnstack->s[stptr - 1])) { + rpnstack->s[stptr - 1] = rpnstack->s[stptr]; + } else if (isnan(rpnstack->s[stptr])) { + /* NOOP */ + /* rpnstack->s[stptr - 1] = rpnstack->s[stptr - 1]; */ + } else { + rpnstack->s[stptr - 1] = rpnstack->s[stptr - 1] + + rpnstack->s[stptr]; + } stptr--; break; @@ -705,8 +706,10 @@ short rpn_calc( break; case OP_IF: stackunderflow(2); - rpnstack->s[stptr - 2] = ( isnan(rpnstack->s[stptr - 2]) || rpnstack->s[stptr - 2] == 0.0 ) ? - rpnstack->s[stptr] : rpnstack->s[stptr - 1]; + rpnstack->s[stptr - 2] = (isnan(rpnstack->s[stptr - 2]) + || rpnstack->s[stptr - 2] == + 0.0) ? rpnstack->s[stptr] : rpnstack-> + s[stptr - 1]; stptr--; stptr--; break;