mirror of
https://github.com/samba-team/samba.git
synced 2025-02-23 09:57:40 +03:00
pidl: Use a tmp_ctx helper variable
This is so we free the ndr_push_struct_blob() return value after we make it into a string Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Garming Sam <garming@catalyst.net.nz>
This commit is contained in:
parent
dffa2dbfab
commit
90bf114f63
@ -269,17 +269,28 @@ sub PythonStruct($$$$$$)
|
||||
$self->pidl("{");
|
||||
$self->indent;
|
||||
$self->pidl("$cname *object = ($cname *)pytalloc_get_ptr(py_obj);");
|
||||
$self->pidl("PyObject *ret = NULL;");
|
||||
$self->pidl("DATA_BLOB blob;");
|
||||
$self->pidl("enum ndr_err_code err;");
|
||||
$self->pidl("err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_$name);");
|
||||
$self->pidl("TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));");
|
||||
$self->pidl("if (tmp_ctx == NULL) {");
|
||||
$self->indent;
|
||||
$self->pidl("PyErr_SetNdrError(NDR_ERR_ALLOC);");
|
||||
$self->pidl("return NULL;");
|
||||
$self->deindent;
|
||||
$self->pidl("}");
|
||||
$self->pidl("err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_$name);");
|
||||
$self->pidl("if (err != NDR_ERR_SUCCESS) {");
|
||||
$self->indent;
|
||||
$self->pidl("TALLOC_FREE(tmp_ctx);");
|
||||
$self->pidl("PyErr_SetNdrError(err);");
|
||||
$self->pidl("return NULL;");
|
||||
$self->deindent;
|
||||
$self->pidl("}");
|
||||
$self->pidl("");
|
||||
$self->pidl("return PyString_FromStringAndSize((char *)blob.data, blob.length);");
|
||||
$self->pidl("ret = PyString_FromStringAndSize((char *)blob.data, blob.length);");
|
||||
$self->pidl("TALLOC_FREE(tmp_ctx);");
|
||||
$self->pidl("return ret;");
|
||||
$self->deindent;
|
||||
$self->pidl("}");
|
||||
$self->pidl("");
|
||||
|
Loading…
x
Reference in New Issue
Block a user