bindings should invoke new rrd_flushcached (instead of rrd_cmd_flush) -- kevin
[rrdtool.git] / bindings / python / rrdtoolmodule.c
index 6cc22ad..4e20aa0 100644 (file)
@@ -466,6 +466,7 @@ static PyObject *PyDict_FromInfo(
         }
         if (val) {
             PyDict_SetItemString(r, data->key, val);
+            Py_DECREF(val);
         }
         data = data->next;
     }
@@ -490,10 +491,13 @@ static PyObject *PyRRD_info(
     if ((data = rrd_info(argc, argv)) == NULL) {
         PyErr_SetString(ErrorObject, rrd_get_error());
         rrd_clear_error();
-        return NULL;
+        r = NULL;
+    } else {
+        r = PyDict_FromInfo(data);
+        rrd_info_free(data);
     }
-    r = PyDict_FromInfo(data);
-    rrd_info_free(data);
+
+    destroy_args(&argv);
     return r;
 }
 
@@ -515,10 +519,13 @@ static PyObject *PyRRD_graphv(
     if ((data = rrd_graph_v(argc, argv)) == NULL) {
         PyErr_SetString(ErrorObject, rrd_get_error());
         rrd_clear_error();
-        return NULL;
+        r = NULL;
+    } else {
+        r = PyDict_FromInfo(data);
+        rrd_info_free(data);
     }
-    r = PyDict_FromInfo(data);
-    rrd_info_free(data);
+
+    destroy_args(&argv);
     return r;
 }
 
@@ -540,18 +547,21 @@ static PyObject *PyRRD_updatev(
     if ((data = rrd_update_v(argc, argv)) == NULL) {
         PyErr_SetString(ErrorObject, rrd_get_error());
         rrd_clear_error();
-        return NULL;
+        r = NULL;
+    } else {
+        r = PyDict_FromInfo(data);
+        rrd_info_free(data);
     }
-    r = PyDict_FromInfo(data);
-    rrd_info_free(data);
+
+    destroy_args(&argv);
     return r;
 }
 
-static char PyRRD_flush__doc__[] =
+static char PyRRD_flushcached__doc__[] =
   "flush(args..): flush RRD files from memory\n"
   "   flush [--daemon address] file [file ...]";
 
-static PyObject *PyRRD_flush(
+static PyObject *PyRRD_flushcached(
     PyObject UNUSED(*self),
     PyObject * args)
 {
@@ -559,7 +569,7 @@ static PyObject *PyRRD_flush(
     int       argc;
     char    **argv;
 
-    if (create_args("flush", args, &argc, &argv) < 0)
+    if (create_args("flushcached", args, &argc, &argv) < 0)
         return NULL;
 
     if (rrd_cmd_flush(argc, argv) != 0) {
@@ -590,7 +600,7 @@ static PyMethodDef _rrdtool_methods[] = {
     meth("info", PyRRD_info, PyRRD_info__doc__),
     meth("graphv", PyRRD_graphv, PyRRD_graphv__doc__),
     meth("updatev", PyRRD_updatev, PyRRD_updatev__doc__),
-    meth("flush", PyRRD_flush, PyRRD_flush__doc__),
+    meth("flushcached", PyRRD_flushcached, PyRRD_flushcached__doc__),
     {NULL, NULL, 0, NULL}
 };