s4-pild-python: Fix assignments - even though we reference the mem_ctx
authorJelmer Vernooij <jelmer@samba.org>
Tue, 21 Sep 2010 04:02:16 +0000 (21:02 -0700)
committerJelmer Vernooij <jelmer@samba.org>
Tue, 21 Sep 2010 05:40:47 +0000 (22:40 -0700)
of an object we still use the actual ptr.

pidl/lib/Parse/Pidl/Samba4/Python.pm

index 2c42b0a87437288ba0566ea1d8ee208f09d8a409..d4db4c08344326d15da249938719eaa4aebfc962 100644 (file)
@@ -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;
        }