rrdtool.fetch is returning an extra, bogus, data point. Attached is a
[rrdtool.git] / bindings / python / rrdtoolmodule.c
index 4d3a0d5..2771720 100644 (file)
@@ -184,7 +184,7 @@ static PyObject *PyRRD_fetch(
         unsigned long i, j, row;
         rrd_value_t dv;
 
-        row = ((end - start) / step + 1);
+        row = (end - start) / step;
 
         r = PyTuple_New(3);
         range_tup = PyTuple_New(3);
@@ -219,9 +219,9 @@ static PyObject *PyRRD_fetch(
         }
 
         for (i = 0; i < ds_cnt; i++)
-            free(ds_namv[i]);
-        free(ds_namv);  /* rrdtool don't use PyMem_Malloc :) */
-        free(data);
+            rrd_freemem(ds_namv[i]);
+        rrd_freemem(ds_namv);   /* rrdtool don't use PyMem_Malloc :) */
+        rrd_freemem(data);
     }
 
     destroy_args(&argv);
@@ -282,9 +282,9 @@ static PyObject *PyRRD_graph(
                 t = PyString_FromString(calcpr[i]);
                 PyList_Append(e, t);
                 Py_DECREF(t);
-                free(calcpr[i]);
+                rrd_freemem(calcpr[i]);
             }
-            free(calcpr);
+            rrd_freemem(calcpr);
         } else {
             Py_INCREF(Py_None);
             PyTuple_SET_ITEM(r, 2, Py_None);
@@ -404,7 +404,7 @@ static PyObject *PyRRD_resize(
 }
 
 static PyObject *PyDict_FromInfo(
-    info_t *data)
+    rrd_info_t * data)
 {
     PyObject *r;
 
@@ -451,7 +451,7 @@ static PyObject *PyRRD_info(
     PyObject *r;
     int       argc;
     char    **argv;
-    info_t   *data;
+    rrd_info_t *data;
 
     if (create_args("info", args, &argc, &argv) < 0)
         return NULL;
@@ -462,7 +462,7 @@ static PyObject *PyRRD_info(
         return NULL;
     }
     r = PyDict_FromInfo(data);
-    info_free(data);
+    rrd_info_free(data);
     return r;
 }
 
@@ -476,7 +476,7 @@ static PyObject *PyRRD_graphv(
     PyObject *r;
     int       argc;
     char    **argv;
-    info_t   *data;
+    rrd_info_t *data;
 
     if (create_args("graphv", args, &argc, &argv) < 0)
         return NULL;
@@ -487,7 +487,7 @@ static PyObject *PyRRD_graphv(
         return NULL;
     }
     r = PyDict_FromInfo(data);
-    info_free(data);
+    rrd_info_free(data);
     return r;
 }
 
@@ -501,7 +501,7 @@ static PyObject *PyRRD_updatev(
     PyObject *r;
     int       argc;
     char    **argv;
-    info_t   *data;
+    rrd_info_t *data;
 
     if (create_args("updatev", args, &argc, &argv) < 0)
         return NULL;
@@ -512,7 +512,7 @@ static PyObject *PyRRD_updatev(
         return NULL;
     }
     r = PyDict_FromInfo(data);
-    info_free(data);
+    rrd_info_free(data);
     return r;
 }