From 7bf94150dac76fac39fe0999afe1d596970c5bb4 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Thu, 5 Jul 2007 07:19:14 +0000 Subject: r23721: For unions, The TAG and the ARM are aligned independently. Move emitting ALIGN_TO_x_BYTES to after the tag has been dissected so the alignment only affects the ARM. (This used to be commit 22945854d91c87cc17df681db5fd3c6871cdaadc) --- source4/pidl/lib/Parse/Pidl/Wireshark/NDR.pm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'source4/pidl') diff --git a/source4/pidl/lib/Parse/Pidl/Wireshark/NDR.pm b/source4/pidl/lib/Parse/Pidl/Wireshark/NDR.pm index ac923bef74..ffe104c941 100644 --- a/source4/pidl/lib/Parse/Pidl/Wireshark/NDR.pm +++ b/source4/pidl/lib/Parse/Pidl/Wireshark/NDR.pm @@ -614,12 +614,6 @@ sub Union($$$$) $self->pidl_code("$switch_type level;"); $self->pidl_code(""); - if ($e->{ALIGN} > 1) { - $self->pidl_code("ALIGN_TO_$e->{ALIGN}_BYTES;"); - } - - $self->pidl_code(""); - $self->pidl_code("old_offset = offset;"); $self->pidl_code("if (parent_tree) {"); $self->indent; @@ -632,6 +626,12 @@ sub Union($$$$) $self->pidl_code("offset = $switch_dissect(tvb, offset, pinfo, tree, drep, hf_index, &level);"); + if ($e->{ALIGN} > 1) { + $self->pidl_code("ALIGN_TO_$e->{ALIGN}_BYTES;"); + $self->pidl_code(""); + } + + $self->pidl_code("switch(level) {$res\t}"); $self->pidl_code("proto_item_set_len(item, offset-old_offset);\n"); $self->pidl_code("return offset;"); -- cgit