diff options
author | Stefan Metzmacher <metze@samba.org> | 2017-02-20 18:02:09 +0100 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2017-02-25 06:33:33 +0100 |
commit | 2170f556299c6ab4ce33f22169ca26ecad3440e3 (patch) | |
tree | 0728e4525ee57571360aa2816c1f10291e2a000e /source4/librpc/rpc | |
parent | 1ee0c0f8280393c708f23361ebcba0776e8b4d33 (diff) | |
download | samba-2170f556299c6ab4ce33f22169ca26ecad3440e3.tar.gz |
pidl:Python: use of pytalloc_GenericObject_reference*() for pyrpc_{ex,im}port_union() wrapping
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12601
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Sat Feb 25 06:33:33 CET 2017 on sn-devel-144
Diffstat (limited to 'source4/librpc/rpc')
-rw-r--r-- | source4/librpc/rpc/pyrpc_util.c | 44 |
1 files changed, 4 insertions, 40 deletions
diff --git a/source4/librpc/rpc/pyrpc_util.c b/source4/librpc/rpc/pyrpc_util.c index cfbb9cb1977..fe0e2de8355 100644 --- a/source4/librpc/rpc/pyrpc_util.c +++ b/source4/librpc/rpc/pyrpc_util.c @@ -394,21 +394,16 @@ PyObject *PyString_FromStringOrNULL(const char *str) PyObject *pyrpc_import_union(PyTypeObject *type, TALLOC_CTX *mem_ctx, int level, const void *in, const char *typename) { - static const char *mem_ctx_type = "TALLOC_CTX"; PyObject *mem_ctx_obj = NULL; PyObject *in_obj = NULL; PyObject *ret = NULL; - mem_ctx_obj = PyCObject_FromVoidPtrAndDesc(mem_ctx, - discard_const_p(char, mem_ctx_type), - NULL); + mem_ctx_obj = pytalloc_GenericObject_reference(mem_ctx); if (mem_ctx_obj == NULL) { return NULL; } - in_obj = PyCObject_FromVoidPtrAndDesc(discard_const(in), - discard_const_p(char, typename), - NULL); + in_obj = pytalloc_GenericObject_reference_ex(mem_ctx, discard_const(in)); if (in_obj == NULL) { Py_XDECREF(mem_ctx_obj); return NULL; @@ -430,16 +425,11 @@ PyObject *pyrpc_import_union(PyTypeObject *type, TALLOC_CTX *mem_ctx, int level, void *pyrpc_export_union(PyTypeObject *type, TALLOC_CTX *mem_ctx, int level, PyObject *in, const char *typename) { - static const char *mem_ctx_type = "TALLOC_CTX"; PyObject *mem_ctx_obj = NULL; PyObject *ret_obj = NULL; - const char *ret_desc = NULL; void *ret = NULL; - int cmp; - mem_ctx_obj = PyCObject_FromVoidPtrAndDesc(mem_ctx, - discard_const_p(char, mem_ctx_type), - NULL); + mem_ctx_obj = pytalloc_GenericObject_reference(mem_ctx); if (mem_ctx_obj == NULL) { return NULL; } @@ -453,33 +443,7 @@ void *pyrpc_export_union(PyTypeObject *type, TALLOC_CTX *mem_ctx, int level, return NULL; } - if (!PyCObject_Check(ret_obj)) { - Py_XDECREF(ret_obj); - PyErr_Format(PyExc_TypeError, - "New %s.__export__() returned no PyCObject!", - type->tp_name); - return NULL; - } - - ret_desc = (const char *)PyCObject_GetDesc(ret_obj); - if (ret_desc == NULL) { - Py_XDECREF(ret_obj); - PyErr_Format(PyExc_TypeError, - "New %s.__export__() returned no PyCObject_GetDesc()!", - type->tp_name); - return NULL; - } - - cmp = strncmp(typename, ret_desc, strlen(typename) + 1); - if (cmp != 0) { - Py_XDECREF(ret_obj); - PyErr_Format(PyExc_TypeError, - "New %s.__export__() returned PyCObject_GetDesc() != %s!", - type->tp_name, typename); - return NULL; - } - - ret = PyCObject_AsVoidPtr(ret_obj); + ret = _pytalloc_get_type(ret_obj, typename); Py_XDECREF(ret_obj); return ret; } |