projects
/
rrdtool.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
prepare for the release of rrdtool-1.2.6
[rrdtool.git]
/
src
/
rrd_rpncalc.c
diff --git
a/src/rrd_rpncalc.c
b/src/rrd_rpncalc.c
index
73bef2f
..
73d5dde
100644
(file)
--- a/
src/rrd_rpncalc.c
+++ b/
src/rrd_rpncalc.c
@@
-1,5
+1,5
@@
/****************************************************************************
/****************************************************************************
- * RRDtool 1.2
rc3
Copyright by Tobi Oetiker, 1997-2005
+ * RRDtool 1.2
.6
Copyright by Tobi Oetiker, 1997-2005
****************************************************************************
* rrd_rpncalc.c RPN calculator functions
****************************************************************************/
****************************************************************************
* rrd_rpncalc.c RPN calculator functions
****************************************************************************/
@@
-428,7
+428,8
@@
rpn_calc(rpnp_t *rpnp, rpnstack_t *rpnstack, long data_idx,
rpnstack -> s[++stptr] = rpnp[rpi].val;
break;
case OP_VARIABLE:
rpnstack -> s[++stptr] = rpnp[rpi].val;
break;
case OP_VARIABLE:
- /* Sanity check: VDEFs shouldn't make it here */
+ case OP_PREV_OTHER:
+ /* Sanity check: VDEFs shouldn't make it here */
if (rpnp[rpi].ds_cnt == 0) {
rrd_set_error("VDEF made it into rpn_calc... aborting");
return -1;
if (rpnp[rpi].ds_cnt == 0) {
rrd_set_error("VDEF made it into rpn_calc... aborting");
return -1;
@@
-439,7
+440,16
@@
rpn_calc(rpnp_t *rpnp, rpnstack_t *rpnstack, long data_idx,
* row in the rra (skip over non-relevant
* data sources)
*/
* row in the rra (skip over non-relevant
* data sources)
*/
- rpnstack -> s[++stptr] = *(rpnp[rpi].data);
+ if (rpnp[rpi].op == OP_VARIABLE) {
+ rpnstack -> s[++stptr] = *(rpnp[rpi].data);
+ } else {
+ if ((output_idx) <= 0) {
+ rpnstack -> s[++stptr] = DNAN;
+ } else {
+ rpnstack -> s[++stptr] = *(rpnp[rpi].data-rpnp[rpi].ds_cnt);
+ }
+
+ }
if (data_idx % rpnp[rpi].step == 0){
rpnp[rpi].data += rpnp[rpi].ds_cnt;
}
if (data_idx % rpnp[rpi].step == 0){
rpnp[rpi].data += rpnp[rpi].ds_cnt;
}
@@
-454,15
+464,8
@@
rpn_calc(rpnp_t *rpnp, rpnstack_t *rpnstack, long data_idx,
} else {
rpnstack -> s[++stptr] = output[output_idx-1];
}
} else {
rpnstack -> s[++stptr] = output[output_idx-1];
}
- break;
- case OP_PREV_OTHER:
- if ((output_idx) <= 0) {
- rpnstack -> s[++stptr] = DNAN;
- } else {
- rpnstack -> s[++stptr] = rpnp[rpnp[rpi].ptr].data[output_idx-1];
- }
- break;
- case OP_UNKN:
+ break;
+ case OP_UNKN:
rpnstack -> s[++stptr] = DNAN;
break;
case OP_INF:
rpnstack -> s[++stptr] = DNAN;
break;
case OP_INF: