From f832c961a828db42f3c6560760f3722688774367 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 1 Nov 2012 09:09:36 -0600 Subject: [PATCH] change `Scheme_Symbol' declaration to avoid compiler warnings --- src/racket/include/scheme.h | 6 +++++- src/racket/src/mzmark_type.inc | 6 +++--- src/racket/src/mzmarksrc.c | 2 +- src/racket/src/symbol.c | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/racket/include/scheme.h b/src/racket/include/scheme.h index 9b93c22d73..a309968fbe 100644 --- a/src/racket/include/scheme.h +++ b/src/racket/include/scheme.h @@ -127,10 +127,14 @@ typedef long FILE; old way. */ #ifdef MZ_USE_OLD_ARRAY_STYLE # define mzFLEX_ARRAY_DECL 1 +# define mzFLEX_ARRAY4_DECL 4 # define mzFLEX_DELTA 1 +# define mzFLEX4_DELTA 4 #else # define mzFLEX_ARRAY_DECL /* empty */ +# define mzFLEX_ARRAY4_DECL /* empty */ # define mzFLEX_DELTA 0 +# define mzFLEX4_DELTA 0 #endif #ifdef MZ_XFORM @@ -331,7 +335,7 @@ typedef struct { typedef struct Scheme_Symbol { Scheme_Inclhash_Object iso; /* 1 in low bit of keyex indicates uninterned */ intptr_t len; - char s[4]; /* Really, a number of chars to match `len' */ + char s[mzFLEX_ARRAY4_DECL]; } Scheme_Symbol; typedef struct Scheme_Vector { diff --git a/src/racket/src/mzmark_type.inc b/src/racket/src/mzmark_type.inc index a33c5f68a8..273ffe0e60 100644 --- a/src/racket/src/mzmark_type.inc +++ b/src/racket/src/mzmark_type.inc @@ -1417,21 +1417,21 @@ static int symbol_obj_SIZE(void *p, struct NewGC *gc) { Scheme_Symbol *s = (Scheme_Symbol *)p; return - gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len - 3); + gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len + 1 - mzFLEX4_DELTA); } static int symbol_obj_MARK(void *p, struct NewGC *gc) { Scheme_Symbol *s = (Scheme_Symbol *)p; return - gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len - 3); + gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len + 1 - mzFLEX4_DELTA); } static int symbol_obj_FIXUP(void *p, struct NewGC *gc) { Scheme_Symbol *s = (Scheme_Symbol *)p; return - gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len - 3); + gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len + 1 - mzFLEX4_DELTA); } #define symbol_obj_IS_ATOMIC 1 diff --git a/src/racket/src/mzmarksrc.c b/src/racket/src/mzmarksrc.c index c49f50198d..933eb7a714 100644 --- a/src/racket/src/mzmarksrc.c +++ b/src/racket/src/mzmarksrc.c @@ -551,7 +551,7 @@ symbol_obj { mark: size: - gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len - 3); + gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len + 1 - mzFLEX4_DELTA); } cons_cell { diff --git a/src/racket/src/symbol.c b/src/racket/src/symbol.c index 781195190d..75d72226c2 100644 --- a/src/racket/src/symbol.c +++ b/src/racket/src/symbol.c @@ -356,7 +356,7 @@ make_a_symbol(const char *name, uintptr_t len, int kind) { Scheme_Symbol *sym; - sym = (Scheme_Symbol *)scheme_malloc_atomic_tagged(sizeof(Scheme_Symbol) + len - 3); + sym = (Scheme_Symbol *)scheme_malloc_atomic_tagged(sizeof(Scheme_Symbol) + len + 1 - mzFLEX4_DELTA); sym->iso.so.type = scheme_symbol_type; MZ_OPT_HASH_KEY(&sym->iso) = kind;