reat nan as FALSE in an IF CDEF
authoroetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa>
Sat, 15 Mar 2008 10:32:10 +0000 (10:32 +0000)
committeroetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa>
Sat, 15 Mar 2008 10:32:10 +0000 (10:32 +0000)
git-svn-id: svn://svn.oetiker.ch/rrdtool/trunk/program@1305 a5681a0c-68f1-0310-ab6d-d61299d08faa

src/rrd_rpncalc.c

index 839643b..1f86f2e 100644 (file)
@@ -705,8 +705,8 @@ short rpn_calc(
             break;
         case OP_IF:
             stackunderflow(2);
             break;
         case OP_IF:
             stackunderflow(2);
-            rpnstack->s[stptr - 2] = rpnstack->s[stptr - 2] != 0.0 ?
-                rpnstack->s[stptr - 1] : rpnstack->s[stptr];
+            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;
             stptr--;
             stptr--;
             break;