From bb3301ba7851de2e00e8a6162bcc4282db7cf75e Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Wed, 11 Dec 2013 16:12:14 +0000 Subject: [PATCH] Don't free passed in args in libvirt_charPtrWrap / libvirt_charPtrSizeWrap Functions should not make assumptions about the memory management callers use for parameters Signed-off-by: Daniel P. Berrange --- libvirt-override.c | 4 +++- typewrappers.c | 2 -- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libvirt-override.c b/libvirt-override.c index 8b39df9..bdd38e7 100644 --- a/libvirt-override.c +++ b/libvirt-override.c @@ -6881,7 +6881,9 @@ libvirt_virStreamRecv(PyObject *self ATTRIBUTE_UNUSED, return libvirt_intWrap(ret); if (ret < 0) return VIR_PY_NONE; - return libvirt_charPtrSizeWrap((char *) buf, (Py_ssize_t) ret); + ret = libvirt_charPtrSizeWrap((char *) buf, (Py_ssize_t) ret); + VIR_FREE(buf); + return ret; } static PyObject * diff --git a/typewrappers.c b/typewrappers.c index 1622986..7b644a1 100644 --- a/typewrappers.c +++ b/typewrappers.c @@ -85,7 +85,6 @@ libvirt_charPtrSizeWrap(char *str, Py_ssize_t size) return Py_None; } ret = PyString_FromStringAndSize(str, size); - VIR_FREE(str); return ret; } @@ -99,7 +98,6 @@ libvirt_charPtrWrap(char *str) return Py_None; } ret = PyString_FromString(str); - VIR_FREE(str); return ret; }