WORKS!!!...pidl/NDR: fix handling of multilevel pointers in function elements
[ira/wip.git] / source4 / pidl / lib / Parse / Pidl / NDR.pm
index 7d8907c6b58bb9fa757fda60f3a92e7cb2618414..003eaf0ba74d34787818574f666f851ca91539f4 100644 (file)
@@ -173,9 +173,9 @@ sub GetElementLevelTable($$)
                #
                # --metze
                #
-               if ($i == 1) {
-                       $pt = pointer_type($e);
-               } else {
+               $pt = pointer_type($e);
+               if ($i > 1) {
+                       $is_deferred = 1 if ($pt ne "ref" and $e->{PARENT}->{TYPE} eq "FUNCTION");
                        $pt = $pointer_default;
                }
 
@@ -195,7 +195,7 @@ sub GetElementLevelTable($$)
                $pointer_idx++;
                
                # everything that follows will be deferred
-               $is_deferred = 1 if ($e->{PARENT}->{TYPE} ne "FUNCTION");
+               $is_deferred = 1 if ($level ne "TOP");
 
                my $array_size = shift @size_is;
                my $array_length;