]> xenbits.xensource.com Git - libvirt.git/commitdiff
python: Don't free must-not-free variables
authorMichal Privoznik <mprivozn@redhat.com>
Mon, 23 May 2011 12:41:00 +0000 (14:41 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Tue, 24 May 2011 08:33:36 +0000 (10:33 +0200)
py_str() function call PyString_AsString(). As written in documentation,
the caller must not free the returned value, because it points to some
internal structures.

python/libvirt-override.c

index a151e78b7bbd442a742601a0062d4689c691c139..c42931d71f2be4763f16989532f64bb904749ccf 100644 (file)
@@ -35,6 +35,9 @@ extern void initcygvirtmod(void);
 #define VIR_PY_INT_FAIL (libvirt_intWrap(-1))
 #define VIR_PY_INT_SUCCESS (libvirt_intWrap(0))
 
+/* We don't want to free() returned value. As written in doc:
+ * PyString_AsString returns pointer to 'internal buffer of string,
+ * not a copy' and 'It must not be deallocated'. */
 static char *py_str(PyObject *obj)
 {
     PyObject *str = PyObject_Str(obj);
@@ -2660,7 +2663,6 @@ libvirt_virEventAddHandleFunc  (int fd,
         char *name = py_str(python_cb);
         printf("%s: %s is not callable\n", __FUNCTION__,
                name ? name : "libvirt.eventInvokeHandleCallback");
-        free(name);
 #endif
         goto cleanup;
     }
@@ -2805,7 +2807,6 @@ libvirt_virEventAddTimeoutFunc(int timeout,
         char *name = py_str(python_cb);
         printf("%s: %s is not callable\n", __FUNCTION__,
                name ? name : "libvirt.eventInvokeTimeoutCallback");
-        free(name);
 #endif
         goto cleanup;
     }
@@ -2919,17 +2920,11 @@ libvirt_virEventRegisterImpl(ATTRIBUTE_UNUSED PyObject * self,
 {
     /* Unref the previously-registered impl (if any) */
     Py_XDECREF(addHandleObj);
-    free(addHandleName);
     Py_XDECREF(updateHandleObj);
-    free(updateHandleName);
     Py_XDECREF(removeHandleObj);
-    free(removeHandleName);
     Py_XDECREF(addTimeoutObj);
-    free(addTimeoutName);
     Py_XDECREF(updateTimeoutObj);
-    free(updateTimeoutName);
     Py_XDECREF(removeTimeoutObj);
-    free(removeTimeoutName);
 
     /* Parse and check arguments */
     if (!PyArg_ParseTuple(args, (char *) "OOOOOO:virEventRegisterImpl",