diff options
author | Ludovic Courtès <ludo@gnu.org> | 2009-12-14 23:11:47 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2009-12-15 01:01:16 +0100 |
commit | 3dbbe28dfd90cd7bf68d8d07771dffc724064311 (patch) | |
tree | 32dc56d5a966e1f895dd8c028d0f1ea9379016d3 /libguile/objcodes.h | |
parent | cd169c5a2284c019b3909de67fc0e3f2b0a5dd44 (diff) | |
download | guile-3dbbe28dfd90cd7bf68d8d07771dffc724064311.tar.gz |
Don't use GCC zero-length arrays.
* libguile/frames.c, libguile/objcodes.c, libguile/programs.c,
libguile/vm-engine.c, libguile/vm-i-system.c, libguile/vm.c: Use
`SCM_C_OBJCODE_BASE ()' instead of accessing the `base' field of
`struct scm_objcode'.
* libguile/objcodes.h (struct scm_objcode)[base]: Remove.
Diffstat (limited to 'libguile/objcodes.h')
-rw-r--r-- | libguile/objcodes.h | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/libguile/objcodes.h b/libguile/objcodes.h index ab4db3dab..4627cfb89 100644 --- a/libguile/objcodes.h +++ b/libguile/objcodes.h @@ -21,14 +21,20 @@ #include <libguile.h> -/* objcode data should be directly mappable to this C structure. */ -struct scm_objcode { +/* Objcode data should be directly mappable to this C structure. */ +struct scm_objcode +{ scm_t_uint32 len; /* the maximum index of base[] */ scm_t_uint32 metalen; /* well, i lie. this many bytes at the end of base[] for metadata */ - scm_t_uint8 base[0]; + /* In C99, we'd have: + scm_t_uint8 base[]; */ }; +/* Return a pointer to the base of objcode OBJ. */ +#define SCM_C_OBJCODE_BASE(obj) \ + ((scm_t_uint8 *)(obj) + sizeof (struct scm_objcode)) + #define SCM_F_OBJCODE_IS_MMAP (1<<0) #define SCM_F_OBJCODE_IS_U8VECTOR (1<<1) #define SCM_F_OBJCODE_IS_SLICE (1<<2) @@ -42,7 +48,7 @@ SCM_API scm_t_bits scm_tc16_objcode; #define SCM_OBJCODE_LEN(x) (SCM_OBJCODE_DATA (x)->len) #define SCM_OBJCODE_META_LEN(x) (SCM_OBJCODE_DATA (x)->metalen) #define SCM_OBJCODE_TOTAL_LEN(x) (SCM_OBJCODE_LEN (x) + SCM_OBJCODE_META_LEN (x)) -#define SCM_OBJCODE_BASE(x) (SCM_OBJCODE_DATA (x)->base) +#define SCM_OBJCODE_BASE(x) (SCM_C_OBJCODE_BASE (SCM_OBJCODE_DATA (x))) #define SCM_OBJCODE_IS_MMAP(x) (SCM_SMOB_FLAGS (x) & SCM_F_OBJCODE_IS_MMAP) #define SCM_OBJCODE_IS_U8VECTOR(x) (SCM_SMOB_FLAGS (x) & SCM_F_OBJCODE_IS_U8VECTOR) |