summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2007-02-28 00:28:14 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:48:58 -0500
commita635df47da4c0f8434dc51349600edf9ef0805f1 (patch)
treef5165cc63105958e2488b1eb5a1752e19a57620a
parentc1aef15fe7e7a7558b6ede11babc1932263814e6 (diff)
downloadsamba-a635df47da4c0f8434dc51349600edf9ef0805f1.tar.gz
samba-a635df47da4c0f8434dc51349600edf9ef0805f1.tar.bz2
samba-a635df47da4c0f8434dc51349600edf9ef0805f1.zip
r21574: Fix handling of DECLARE.
(This used to be commit 6a4033464bf269176f928a5b3b7e63aad1bb1e7a)
-rw-r--r--source4/pidl/lib/Parse/Pidl/NDR.pm2
-rw-r--r--source4/pidl/lib/Parse/Pidl/Typelist.pm1
-rwxr-xr-xsource4/pidl/tests/ndr.pl8
3 files changed, 9 insertions, 2 deletions
diff --git a/source4/pidl/lib/Parse/Pidl/NDR.pm b/source4/pidl/lib/Parse/Pidl/NDR.pm
index 934aba3a02..998b19aabf 100644
--- a/source4/pidl/lib/Parse/Pidl/NDR.pm
+++ b/source4/pidl/lib/Parse/Pidl/NDR.pm
@@ -349,7 +349,7 @@ sub align_type($)
my $dt = getType($e);
- if ($dt->{TYPE} eq "TYPEDEF") {
+ if ($dt->{TYPE} eq "TYPEDEF" or $dt->{TYPE} eq "DECLARE") {
return align_type($dt->{DATA});
} elsif ($dt->{TYPE} eq "ENUM") {
return align_type(Parse::Pidl::Typelist::enum_type_fn($dt));
diff --git a/source4/pidl/lib/Parse/Pidl/Typelist.pm b/source4/pidl/lib/Parse/Pidl/Typelist.pm
index 72c4b18d0b..8e311554bc 100644
--- a/source4/pidl/lib/Parse/Pidl/Typelist.pm
+++ b/source4/pidl/lib/Parse/Pidl/Typelist.pm
@@ -132,6 +132,7 @@ sub hasType($)
sub is_scalar($)
{
+ sub is_scalar($);
my $type = shift;
return 1 if (ref($type) eq "HASH" and $type->{TYPE} eq "SCALAR");
diff --git a/source4/pidl/tests/ndr.pl b/source4/pidl/tests/ndr.pl
index 3be5992ef0..17003d59c4 100755
--- a/source4/pidl/tests/ndr.pl
+++ b/source4/pidl/tests/ndr.pl
@@ -4,7 +4,7 @@
use strict;
use warnings;
-use Test::More tests => 22;
+use Test::More tests => 25;
use FindBin qw($RealBin);
use lib "$RealBin";
use Util;
@@ -204,11 +204,17 @@ $e = {
$ne = ParseElement($e, undef);
is($ne->{REPRESENTATION_TYPE}, "uint8");
+is(align_type("hyper"), 8);
is(align_type("uint32"), 4);
is(align_type("uint16"), 2);
is(align_type("uint8"), 1);
is(align_type({ TYPE => "STRUCT", "NAME" => "bla",
ELEMENTS => [ { TYPE => "uint16" } ] }), 4);
+is(align_type({ TYPE => "STRUCT",
+ ELEMENTS => [ { TYPE => "hyper" } ] }), 8);
+is(align_type({ TYPE => "DECLARE", DATA => {
+ TYPE => "STRUCT",
+ ELEMENTS => [ { TYPE => "hyper" } ] }}), 8);
is(align_type({ TYPE => "STRUCT", "NAME" => "bla",
ELEMENTS => [ { TYPE => "uint8" } ] }), 4);