diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2010-09-20 21:02:16 -0700 |
---|---|---|
committer | Jelmer Vernooij <jelmer@samba.org> | 2010-09-20 22:40:47 -0700 |
commit | c4c6f8f1755486056f77b9a7f830d10a9ebfb7b0 (patch) | |
tree | 88ec09f296699e36bfd946bd21547bdbcd5bdaf9 /pidl/lib/Parse/Pidl/Samba4/Python.pm | |
parent | f161fa3ac8e437600e64354652114e99edac32bb (diff) | |
download | samba-c4c6f8f1755486056f77b9a7f830d10a9ebfb7b0.tar.gz samba-c4c6f8f1755486056f77b9a7f830d10a9ebfb7b0.tar.bz2 samba-c4c6f8f1755486056f77b9a7f830d10a9ebfb7b0.zip |
s4-pild-python: Fix assignments - even though we reference the mem_ctx
of an object we still use the actual ptr.
Diffstat (limited to 'pidl/lib/Parse/Pidl/Samba4/Python.pm')
-rw-r--r-- | pidl/lib/Parse/Pidl/Samba4/Python.pm | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/pidl/lib/Parse/Pidl/Samba4/Python.pm b/pidl/lib/Parse/Pidl/Samba4/Python.pm index 2c42b0a874..d4db4c0834 100644 --- a/pidl/lib/Parse/Pidl/Samba4/Python.pm +++ b/pidl/lib/Parse/Pidl/Samba4/Python.pm @@ -832,7 +832,7 @@ sub assign($$$) if ($dest =~ /^\&/ and $src eq "NULL") { $self->pidl("memset($dest, 0, sizeof(" . get_value_of($dest) . "));"); } elsif ($dest =~ /^\&/) { - $self->pidl("memcpy($dest, $src, sizeof(" . get_value_of($dest) . "));"); + $self->pidl("memmove($dest, $src, sizeof(" . get_value_of($dest) . "));"); } else { $self->pidl("$dest = $src;"); } @@ -894,7 +894,13 @@ sub ConvertObjectFromPythonData($$$$$$;$) return; } $self->pidl("PY_CHECK_TYPE($ctype_name, $cvar, $fail);"); - $self->assign($target, "talloc_reference($mem_ctx, (".mapTypeName($ctype)." *)py_talloc_get_mem_ctx($cvar))"); + $self->pidl("if (talloc_reference($mem_ctx, py_talloc_get_mem_ctx($cvar)) == NULL) {"); + $self->indent; + $self->pidl("PyErr_NoMemory();"); + $self->pidl("$fail"); + $self->deindent; + $self->pidl("}"); + $self->assign($target, "(".mapTypeName($ctype)." *)py_talloc_get_ptr($cvar)"); return; } |