Mark H Weaver <m...@netris.org> skribis: > l...@gnu.org (Ludovic Courtès) writes: > >> Mark H Weaver <m...@netris.org> skribis: >> >>> I've come to the conclusion that it is not safe to modify 'scm_t_port' >>> in 2.0 at all; not even to change the member names. In brief, the >>> reason has to do with the C11 standard definition of "compatible types", >>> which ties into the strict aliasing rules. Section 6.2.7 of C11 spells >>> out what it means for two structures declared in separate translation >>> units to be compatible, and among other things their member names must >>> be the same. >> >> I can’t imagine how changing the *name* of a member could change >> something to the structure’s layout in practice. > > It doesn't change the structure's layout. However, it could cause > link-time optimization to break our code.
Ah right, makes sense. >>> +#define scm_gc_typed_calloc(t) ((t *) scm_gc_calloc (sizeof (t), #t)) >> >> Not really convinced by this, but hey. Ideally, this would need to go >> in the manual too. > > Maybe talk to Andy about it? It was his suggestion. No big deal. Ludo’.