Andrew Talbot wrote:
/* All local heap allocations are aligned on 4-byte boundaries */ #define LALIGN(word) (((word) + 3) & ~3)
-#define ARENA_PTR(ptr,arena) ((LOCALARENA *)((char*)(ptr)+(arena))) +#define ARENA_PTR(ptr,arena) ((LOCALARENA *)((ptr)+(arena)))
Don't remove casts from macros like this as they then won't be safe if the type that is passed in is changed to something else (like void *).
Robert Shearman wrote:
Andrew Talbot wrote:
/* All local heap allocations are aligned on 4-byte boundaries */ #define LALIGN(word) (((word) + 3) & ~3)
-#define ARENA_PTR(ptr,arena) ((LOCALARENA
*)((char*)(ptr)+(arena)))
+#define ARENA_PTR(ptr,arena) ((LOCALARENA *)((ptr)+(arena)))
Don't remove casts from macros like this as they then won't be safe if the type that is passed in is changed to something else (like void *).
I think this would give a compile error but more fatal could be if someone happens to pass in a variable that was declared like
long *ptr;
Then the offset calculation would be all wrong.
Rolf Kalbermatter