pidl: Avoid using talloc_free as function pointer, since it may be a
authorJelmer Vernooij <jelmer@samba.org>
Mon, 28 Sep 2009 13:03:17 +0000 (15:03 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Mon, 28 Sep 2009 13:03:17 +0000 (15:03 +0200)
macro.

lib/talloc/pytalloc.c
lib/talloc/pytalloc.h
pidl/lib/Parse/Pidl/Samba4/Python.pm

index 646aac87f25003083499448cb00ccef2d211f450..c6decf33f16e46b29d112574ef87ecec14476da4 100644 (file)
@@ -81,3 +81,13 @@ PyObject *py_talloc_default_repr(PyObject *obj)
        return PyString_FromFormat("<%s talloc object at 0x%p>", 
                                   type->tp_name, talloc_obj->ptr);
 }
+
+static void py_cobject_talloc_free(void *ptr)
+{
+       talloc_free(ptr);
+}
+
+PyObject *PyCObject_FromTallocPtr(void *ptr)
+{
+       return PyCObject_FromVoidPtr(ptr, py_cobject_talloc_free);
+}
index 3bfb272958744b059fe348ac2d0e3edebf406e58..9b6587261c2bf0605250fc1b52f4220b1e1c0802 100644 (file)
@@ -52,4 +52,6 @@ PyObject *py_talloc_default_repr(PyObject *py_obj);
 
 #define py_talloc_new(type, typeobj) py_talloc_steal(typeobj, talloc_zero(NULL, type))
 
+PyObject *PyCObject_FromTallocPtr(void *);
+
 #endif /* _PY_TALLOC_H_ */
index eb8bd318733f6ee8e79a3dcac4cd4f972b5b257b..c785619adb95c9965e7a40ed787fa31538085cd7 100644 (file)
@@ -998,10 +998,10 @@ sub ConvertScalarToPython($$$)
        }
 
        # Not yet supported
-       if ($ctypename eq "string_array") { return "PyCObject_FromVoidPtr($cvar, talloc_free)"; }
+       if ($ctypename eq "string_array") { return "PyCObject_FromTallocPtr($cvar)"; }
        if ($ctypename eq "ipv4address") { return "PyString_FromString($cvar)"; }
        if ($ctypename eq "pointer") {
-               return "PyCObject_FromVoidPtr($cvar, talloc_free)";
+               return "PyCObject_FromTallocPtr($cvar)";
        }
 
        die("Unknown scalar type $ctypename");