mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-21 20:15:17 +00:00
python: Don't free must-not-free variables
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.
This commit is contained in:
parent
5f88d198bd
commit
ef54d045c3
@ -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",
|
||||
|
Loading…
x
Reference in New Issue
Block a user