Merge branch 'sg/obstack-cast-function-type-fix'
The compat/obstack code had casts that -Wcast-function-type compilation option found questionable. * sg/obstack-cast-function-type-fix: compat/obstack: fix -Wcast-function-type warnings
This commit is contained in:
commit
33bea7358f
@ -112,15 +112,15 @@ compat_symbol (libc, _obstack_compat, _obstack, GLIBC_2_0);
|
||||
|
||||
# define CALL_CHUNKFUN(h, size) \
|
||||
(((h) -> use_extra_arg) \
|
||||
? (*(h)->chunkfun) ((h)->extra_arg, (size)) \
|
||||
: (*(struct _obstack_chunk *(*) (long)) (h)->chunkfun) ((size)))
|
||||
? (*(h)->chunkfun.extra) ((h)->extra_arg, (size)) \
|
||||
: (*(h)->chunkfun.plain) ((size)))
|
||||
|
||||
# define CALL_FREEFUN(h, old_chunk) \
|
||||
do { \
|
||||
if ((h) -> use_extra_arg) \
|
||||
(*(h)->freefun) ((h)->extra_arg, (old_chunk)); \
|
||||
(*(h)->freefun.extra) ((h)->extra_arg, (old_chunk)); \
|
||||
else \
|
||||
(*(void (*) (void *)) (h)->freefun) ((old_chunk)); \
|
||||
(*(h)->freefun.plain) ((old_chunk)); \
|
||||
} while (0)
|
||||
|
||||
|
||||
@ -159,8 +159,8 @@ _obstack_begin (struct obstack *h,
|
||||
size = 4096 - extra;
|
||||
}
|
||||
|
||||
h->chunkfun = (struct _obstack_chunk * (*)(void *, long)) chunkfun;
|
||||
h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
|
||||
h->chunkfun.plain = chunkfun;
|
||||
h->freefun.plain = freefun;
|
||||
h->chunk_size = size;
|
||||
h->alignment_mask = alignment - 1;
|
||||
h->use_extra_arg = 0;
|
||||
@ -206,8 +206,9 @@ _obstack_begin_1 (struct obstack *h, int size, int alignment,
|
||||
size = 4096 - extra;
|
||||
}
|
||||
|
||||
h->chunkfun = (struct _obstack_chunk * (*)(void *,long)) chunkfun;
|
||||
h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
|
||||
h->chunkfun.extra = (struct _obstack_chunk * (*)(void *,long)) chunkfun;
|
||||
h->freefun.extra = (void (*) (void *, struct _obstack_chunk *)) freefun;
|
||||
|
||||
h->chunk_size = size;
|
||||
h->alignment_mask = alignment - 1;
|
||||
h->extra_arg = arg;
|
||||
|
@ -160,11 +160,15 @@ struct obstack /* control current object in current chunk */
|
||||
void *tempptr;
|
||||
} temp; /* Temporary for some macros. */
|
||||
int alignment_mask; /* Mask of alignment for each object. */
|
||||
/* These prototypes vary based on `use_extra_arg', and we use
|
||||
casts to the prototypeless function type in all assignments,
|
||||
but having prototypes here quiets -Wstrict-prototypes. */
|
||||
struct _obstack_chunk *(*chunkfun) (void *, long);
|
||||
void (*freefun) (void *, struct _obstack_chunk *);
|
||||
/* These prototypes vary based on `use_extra_arg'. */
|
||||
union {
|
||||
void *(*plain) (long);
|
||||
struct _obstack_chunk *(*extra) (void *, long);
|
||||
} chunkfun;
|
||||
union {
|
||||
void (*plain) (void *);
|
||||
void (*extra) (void *, struct _obstack_chunk *);
|
||||
} freefun;
|
||||
void *extra_arg; /* first arg for chunk alloc/dealloc funcs */
|
||||
unsigned use_extra_arg:1; /* chunk alloc/dealloc funcs take extra arg */
|
||||
unsigned maybe_empty_object:1;/* There is a possibility that the current
|
||||
@ -235,10 +239,10 @@ extern void (*obstack_alloc_failed_handler) (void);
|
||||
(void (*) (void *, void *)) (freefun), (arg))
|
||||
|
||||
#define obstack_chunkfun(h, newchunkfun) \
|
||||
((h) -> chunkfun = (struct _obstack_chunk *(*)(void *, long)) (newchunkfun))
|
||||
((h)->chunkfun.extra = (struct _obstack_chunk *(*)(void *, long)) (newchunkfun))
|
||||
|
||||
#define obstack_freefun(h, newfreefun) \
|
||||
((h) -> freefun = (void (*)(void *, struct _obstack_chunk *)) (newfreefun))
|
||||
((h)->freefun.extra = (void (*)(void *, struct _obstack_chunk *)) (newfreefun))
|
||||
|
||||
#define obstack_1grow_fast(h,achar) (*((h)->next_free)++ = (achar))
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user