Author: jelmer Date: 2007-09-15 23:03:34 +0000 (Sat, 15 Sep 2007) New Revision: 25185
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=25185 Log: Check that can_contain_deferred returns true if one of the members of a type can contain deferred data. Modified: branches/SAMBA_4_0/ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm branches/SAMBA_4_0/source/pidl/tests/ndr.pl Changeset: Property changes on: branches/SAMBA_4_0 ___________________________________________________________________ Name: bzr:revision-info ...skipped... Name: bzr:revision-id:v3-trunk0 ...skipped... Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm =================================================================== --- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm 2007-09-15 20:24:35 UTC (rev 25184) +++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm 2007-09-15 23:03:34 UTC (rev 25185) @@ -289,15 +289,13 @@ return 1 if ($type->{TYPE} eq "DECLARE"); # assume the worst - if ($type->{TYPE} eq "TYPEDEF") { - return can_contain_deferred($type->{DATA}); - } + return can_contain_deferred($type->{DATA}) if ($type->{TYPE} eq "TYPEDEF"); return 0 unless defined($type->{ELEMENTS}); - foreach my $x (@{$type->{ELEMENTS}}) { - return 1 if ($x->{POINTERS}); - return 1 if (can_contain_deferred ($x)); + foreach (@{$type->{ELEMENTS}}) { + return 1 if ($_->{POINTERS}); + return 1 if (can_contain_deferred ($_->{TYPE})); } return 0; Modified: branches/SAMBA_4_0/source/pidl/tests/ndr.pl =================================================================== --- branches/SAMBA_4_0/source/pidl/tests/ndr.pl 2007-09-15 20:24:35 UTC (rev 25184) +++ branches/SAMBA_4_0/source/pidl/tests/ndr.pl 2007-09-15 23:03:34 UTC (rev 25185) @@ -4,7 +4,7 @@ use strict; use warnings; -use Test::More tests => 33; +use Test::More tests => 34; use FindBin qw($RealBin); use lib "$RealBin"; use Util; @@ -266,3 +266,5 @@ ok(not can_contain_deferred({ TYPE => "TYPEDEF", DATA => { TYPE => "STRUCT", ELEMENTS => [ { TYPE => "uint32" } ]}})); +ok(can_contain_deferred({ TYPE => "STRUCT", + ELEMENTS => [ { TYPE => "someunknowntype" } ]}));