pidl/python: Make sure to always increment reference counter when using
authorJelmer Vernooij <jelmer@samba.org>
Thu, 24 Jun 2010 22:16:18 +0000 (00:16 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Thu, 24 Jun 2010 22:16:18 +0000 (00:16 +0200)
Py_None.

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

index 4fb8f6be2c11ff1c3f544750b20384b9b10112ea..4687a535c486592109aa8cfacb96cf84d1997147 100644 (file)
@@ -372,7 +372,7 @@ sub PythonFunctionUnpackOut($$$)
        $self->pidl("static PyObject *$outfnname(struct $fn->{NAME} *r)");
        $self->pidl("{");
        $self->indent;
-       $self->pidl("PyObject *result = Py_None;");
+       $self->pidl("PyObject *result;");
        foreach my $e (@{$fn->{ELEMENTS}}) {
                next unless (grep(/out/,@{$e->{DIRECTION}}));
                next if (($metadata_args->{in}->{$e->{NAME}} and grep(/in/, @{$e->{DIRECTION}})) or 
@@ -391,6 +391,8 @@ sub PythonFunctionUnpackOut($$$)
                $self->pidl("result = PyTuple_New($result_size);");
                $signature .= "(";
        } elsif ($result_size == 0) {
+               $self->pidl("result = Py_None;");
+               $self->pidl("Py_INCREF(result);");
                $signature .= "None";
        }