pidl:Samba4/NDR/Parser: only do the switch type alignment when we have a switch type
[ira/wip.git] / pidl / lib / Parse / Pidl / Samba4 / NDR / Parser.pm
index 5802f9b39309b32f268cf56ccffbf8434e22ad5c..7bc5a32d5e353cb85b840850fa3cb3bb659b3f05 100644 (file)
@@ -1688,11 +1688,11 @@ sub ParseUnionPushPrimitives($$$$)
 
        $self->pidl("uint32_t level = ndr_push_get_switch_value($ndr, $varname);");
 
-       if (defined($e->{ALIGN})) {
-               $self->pidl("NDR_CHECK(ndr_push_union_align($ndr, $e->{ALIGN}));");
-       }
-
        if (defined($e->{SWITCH_TYPE})) {
+               if (defined($e->{ALIGN})) {
+                       $self->pidl("NDR_CHECK(ndr_push_union_align($ndr, $e->{ALIGN}));");
+               }
+
                $self->pidl("NDR_CHECK(ndr_push_$e->{SWITCH_TYPE}($ndr, NDR_SCALARS, level));");
        }
 
@@ -1837,11 +1837,12 @@ sub ParseUnionPullPrimitives($$$$$)
        my ($self,$e,$ndr,$varname,$switch_type) = @_;
        my $have_default = 0;
 
-       if (defined($e->{ALIGN})) {
-               $self->pidl("NDR_CHECK(ndr_pull_union_align($ndr, $e->{ALIGN}));");
-       }
 
        if (defined($switch_type)) {
+               if (defined($e->{ALIGN})) {
+                       $self->pidl("NDR_CHECK(ndr_pull_union_align($ndr, $e->{ALIGN}));");
+               }
+
                $self->pidl("NDR_CHECK(ndr_pull_$switch_type($ndr, NDR_SCALARS, &_level));");
                $self->pidl("if (_level != level) {"); 
                $self->pidl("\treturn ndr_pull_error($ndr, NDR_ERR_BAD_SWITCH, \"Bad switch value %u for $varname at \%s\", _level, __location__);");