python: Don't try to free const pointers.
authorJelmer Vernooij <jelmer@samba.org>
Mon, 14 Jan 2008 17:01:54 +0000 (18:01 +0100)
committerJelmer Vernooij <jelmer@samba.org>
Mon, 14 Jan 2008 18:53:08 +0000 (19:53 +0100)
source/pidl/lib/Parse/Pidl/Samba4/Python.pm

index 84b3405bb9c9b32a90a0bbefa4ef994410f7a4ff..73442be59d70b6c54b1da6250bc66a4ddc95ca7c 100644 (file)
@@ -203,7 +203,11 @@ sub PythonStruct($$$$)
                        $self->pidl("if (!strcmp(name, \"$e->{NAME}\")) {");
                        my $varname = "object->$e->{NAME}";
                        $self->indent;
-                       if ($e->{ORIGINAL}->{POINTERS} > 0) {
+                       my $l = $e->{LEVELS}[0];
+                       my $nl = GetNextLevel($e, $l);
+                       if ($l->{TYPE} eq "POINTER" and 
+                               not ($nl->{TYPE} eq "ARRAY" and ($nl->{IS_FIXED} or is_charset_array($e, $nl))) and
+                               not ($nl->{TYPE} eq "SCALAR" and $nl->{TYPE} eq "string")) {
                                $self->pidl("talloc_free($varname);");
                        }
                        $self->ConvertObjectFromPython($env, $mem_ctx, $e, "value", $varname, "return -1;");