Erik Hofman wrote: > While compiling on IRIX I get the following error: > [...] > To be honnest I'm not quite sure what you're trying to do here.
The hash table needs two blocks allocated: one to hold the table nodes and one to hold the top-level table of "column" pointers. For efficiency, it packs them together into a single malloc'ed block. The standard type rules don't like this, so you end up doing a lot of casting. > error(1138): expression must have pointer-to-object type > h->table = ((void*)h->nodes) + sz*sizeof(struct HashNode); Maybe it doesn't like the arithmetic on a void* (if a language guru knows whether you can add to a void*, please speak up). Try changing it to a char* and see if that fixes this one. I believe (but will have to look it up) that your compiler is incorrectly complaining about the assignment from void* to struct HashNode**. I'm pretty sure this is legal in C, for purposes exactly like this one. But casts are easy to add. > Changing it to the following solves the problem: > h->table = ((struct HashNode*)h->nodes) + sz*sizeof(struct HashNode); > > But it does trigger another problem: > line 23: warning(1515): a value of type > "struct HashNode *" cannot be assigned to an entity of type > "struct HashNode **" This one makes perfect sense. Because the type of h->table is a "struct HashNode**", but you put a case in saying that it was a "struct HashNode*". Regardless, doing this is a bug. Arithmetic on pointers in both C and C++ works in units of the structure size. That line is trying to add a number of bytes to the base address of the block to get a new address; your code adds that many structure sizes. Instead, try this as a more verbose variant and see if it works. It adds an explicit cast to the type of the table, and uses a char* to get around the original error: h->table = (struct HashNode**)(((char*)h->nodes) + sz*sizeof(struct HashNode)); Andy _______________________________________________ Flightgear-devel mailing list [EMAIL PROTECTED] http://mail.flightgear.org/mailman/listinfo/flightgear-devel
