summaryrefslogtreecommitdiff
path: root/source4/librpc/rpc
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2017-02-20 18:02:09 +0100
committerAndrew Bartlett <abartlet@samba.org>2017-02-25 06:33:33 +0100
commit2170f556299c6ab4ce33f22169ca26ecad3440e3 (patch)
tree0728e4525ee57571360aa2816c1f10291e2a000e /source4/librpc/rpc
parent1ee0c0f8280393c708f23361ebcba0776e8b4d33 (diff)
downloadsamba-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.c44
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;
}