Bad recognizing of structs size ??

Using the DC 10.70 (and 10.72) I notice this problem to compiling targetless (my board is RCM4310) :

The compilation doesn’t ends and no error is detected! (error window is empty and the map file is incomplete!)

this is the code:

typedef struct {
byte a[100];
} str1;
bbram far str1 mystr1;

typedef struct {
uint16 x;
uint16 y;
str1 z[400];
} str2;
bbram far str2 mystr2;

#define array_size sizeof(mystr2) // number of bytes in array

main () {
printf("
“);
//printf(”%d", array_size);
printf("
");
}

map file:

// Function mapping and source reference.
// * The size of labels is indeterminate and so is denoted with an asterisk.
// Addr Size Function File Line Num

// Global/static data symbol mapping and source reference.
// Addr Size Symbol File Line Num Type
b3c3 4 dkSendChar \DKCORE.LIB 2605 struct __dksendchar
b3b7 12 sxd \RS232.LIB 479 struct _sxd *[]
00f9:ef9c 100 mystr1 \UNTITLED1.C 4 __far struct mystr1

// Parameter and local auto symbol mapping and source reference.
//Offset Rel. to Size Symbol File Line Num Type

// Macro listing and source reference.
// Name File Line Num
RESTRICT_WATCHCODE
SETUSERMODE \DEFAULT.H 14
SETSYSMODE \DEFAULT.H 15
_system \DEFAULT.H 16
_SYS_CALL_VARS \DEFAULT.H 17

[bgcolor=blue]Anydody can explain me what’is happening??[/bgcolor]

The limit on the size of a struct is 32K and your str2 is 40004 bytes in size. The compiler seems to not give an error message for this and just stops. If you reduce the [400] in your example to 100 for example the code compiles correctly.

Regards,
Peter

Thanks petermcs
I’m cheer up that is only a compile problem of sizeof() function and now I can continue with my big structs but I prefer have an compiler error…

I Imagine that if I use the last bytes of mystr2 the pointer can overwrite unknow mem areas…

How can I reprot this heavy bug to Idigi developers?

You can do it at http://www.digi.com/login?ReturnUrl=%2Fsupport%2Feservice%2F or you can probably send an email to support@digi.com