From: Jelmer Vernooij Date: Tue, 15 Apr 2008 12:32:13 +0000 (+0200) Subject: Fix pointers when pushing strings to python during pidl generation. X-Git-Tag: samba-4.0.0alpha4~61^2~101^2~1 X-Git-Url: http://git.samba.org/?p=samba.git;a=commitdiff_plain;h=ca72187b3e71a037780d42a57e46b60e75f724f6 Fix pointers when pushing strings to python during pidl generation. --- diff --git a/source/pidl/lib/Parse/Pidl/Samba4/Python.pm b/source/pidl/lib/Parse/Pidl/Samba4/Python.pm index acaea99f6db..2d12da358ce 100644 --- a/source/pidl/lib/Parse/Pidl/Samba4/Python.pm +++ b/source/pidl/lib/Parse/Pidl/Samba4/Python.pm @@ -952,16 +952,15 @@ sub ConvertObjectToPythonLevel($$$$$) $self->pidl("}"); } } elsif ($l->{TYPE} eq "ARRAY") { - if (is_charset_array($e, $l)) { + my $pl = GetPrevLevel($e, $l); + if ($pl && $pl->{TYPE} eq "POINTER") { $var_name = get_pointer_to($var_name); + } + + if (is_charset_array($e, $l)) { # FIXME: Use Unix charset setting rather than utf-8 $self->pidl("$py_var = PyUnicode_Decode($var_name, strlen($var_name), \"utf-8\", \"ignore\");"); } else { - my $pl = GetPrevLevel($e, $l); - if ($pl && $pl->{TYPE} eq "POINTER") { - $var_name = get_pointer_to($var_name); - } - die("No SIZE_IS for array $var_name") unless (defined($l->{SIZE_IS})); my $length = $l->{SIZE_IS}; if (defined($l->{LENGTH_IS})) { diff --git a/source/scripting/python/samba/tests/dcerpc/unix.py b/source/scripting/python/samba/tests/dcerpc/unix.py index bfddfdc7ec8..43978ac9dca 100644 --- a/source/scripting/python/samba/tests/dcerpc/unix.py +++ b/source/scripting/python/samba/tests/dcerpc/unix.py @@ -27,6 +27,8 @@ class UnixinfoTests(RpcInterfaceTestCase): def test_getpwuid(self): infos = self.conn.GetPWUid(range(512)) self.assertEquals(512, len(infos)) + self.assertEquals("", infos[0].shell) + self.assertEquals("", infos[0].homedir) def test_gidtosid(self): self.conn.GidToSid(1000)