Attribute "size" corrupts variables in structs

The template special attribute “size” makes problems when used e.g. in a structure.

local uint var1;
local uint var2;
local uint var3;

var1 = 0x1111;
var2 = 0x2222;
var3 = 0x3333;

Printf( "Before struct test1, var1=%X var2=%X var3=%X\n", var1, var2, var3 );
struct {
    Printf( "Inside struct test1, var1=%X var2=%X var3=%X\n", var1, var2, var3 );
    UBYTE testbyte1;
} test1 <size = 1>; // with "size" attribute
//} test1; // without "size" attribute

var1 = 0x44444444;
var2 = 0x55555555;
var3 = 0x66666666;

Printf( "Before struct test2, var1=%X var2=%X var3=%X\n", var1, var2, var3 );
struct {
    Printf( "Inside struct test2, var1=%X var2=%X var3=%X\n", var1, var2, var3 );
    UBYTE testbyte2;
} test2 <size = 1>; // with "size" attribute
//} test2; // without "size" attribute

Printf( "Now var1 var2 var3 are not used anymore...\n" );
var1 = 0xDEADBEEF;
var2 = 0xDEADBEEF;
var3 = 0xDEADBEEF;

With this testcode, and as no variables are altered inside the structure, you would expect an output like this:

Before struct test1, var1=1111 var2=2222 var3=3333
Inside struct test1, var1=1111 var2=2222 var3=3333
Before struct test2, var1=44444444 var2=55555555 var3=66666666
Inside struct test2, var1=44444444 var2=55555555 var3=66666666
Now var1 var2 var3 are not used anymore...

But when you expand both test structures, you instead get corrupted variables like this:

Before struct test1, var1=1111 var2=2222 var3=3333
Inside struct test1, var1=DEADBEEF var2=DEADBEEF var3=DEADBEEF
Before struct test2, var1=44444444 var2=55555555 var3=66666666
Inside struct test2, var1=DEADBEEF var2=DEADBEEF var3=DEADBEEF
Now var1 var2 var3 are not used anymore...

And code that uses variables throughout the template like this gets corrupted variables inside structures. But without the “size” attribute in the structure, you will get normal behaviour. Can this be fixed?