obstack: size_t → _OBSTACK_CHUNK_SIZE_T

* lib/obstack.c (_obstack_begin, _obstack_begin_1):
* lib/obstack.in.h (struct obstack, obstack_init, obstack_begin)
(obstack_specify_allocation)
(obstack_specify_allocation_with_arg, obstack_chunkfun):
Use _OBSTACK_CHUNK_SIZE_T instead of size_t in places where
glibc uses unsigned long rather than size_t.  This makes
no difference with Gnulib, but should help allay any concerns
that merging Gnulib with glibc might change glibc’s ABI
on obsolescent glibc platforms where size_t is unsigned int.
This commit is contained in:
Paul Eggert
2025-05-05 14:16:20 -07:00
parent d68f02b2c5
commit c7dc9c43bc
3 changed files with 30 additions and 11 deletions
+11
View File
@@ -1,5 +1,16 @@
2025-05-05 Paul Eggert <eggert@cs.ucla.edu>
obstack: size_t → _OBSTACK_CHUNK_SIZE_T
* lib/obstack.c (_obstack_begin, _obstack_begin_1):
* lib/obstack.in.h (struct obstack, obstack_init, obstack_begin)
(obstack_specify_allocation)
(obstack_specify_allocation_with_arg, obstack_chunkfun):
Use _OBSTACK_CHUNK_SIZE_T instead of size_t in places where
glibc uses unsigned long rather than size_t. This makes
no difference with Gnulib, but should help allay any concerns
that merging Gnulib with glibc might change glibcs ABI
on obsolescent glibc platforms where size_t is unsigned int.
obstack: rename to _OBSTACK_CHUNK_SIZE_T
* lib/obstack.in.h (_OBSTACK_CHUNK_SIZE_T):
Rename from _CHUNK_SIZE_T, for namespace prefix consistency.
+2 -2
View File
@@ -139,7 +139,7 @@ _obstack_begin_worker (struct obstack *h,
int
_obstack_begin (struct obstack *h,
_OBSTACK_INDEX_T size, _OBSTACK_INDEX_T alignment,
void *(*chunkfun) (size_t),
void *(*chunkfun) (_OBSTACK_CHUNK_SIZE_T),
void (*freefun) (void *))
{
h->chunkfun.plain = chunkfun;
@@ -151,7 +151,7 @@ _obstack_begin (struct obstack *h,
int
_obstack_begin_1 (struct obstack *h,
_OBSTACK_INDEX_T size, _OBSTACK_INDEX_T alignment,
void *(*chunkfun) (void *, size_t),
void *(*chunkfun) (void *, _OBSTACK_CHUNK_SIZE_T),
void (*freefun) (void *, void *),
void *arg)
{
+17 -9
View File
@@ -210,8 +210,8 @@ struct obstack /* control current object in current chunk */
/* These prototypes vary based on 'use_extra_arg'. */
union
{
void *(*plain) (size_t);
void *(*extra) (void *, size_t);
void *(*plain) (_OBSTACK_CHUNK_SIZE_T);
void *(*extra) (void *, _OBSTACK_CHUNK_SIZE_T);
} chunkfun;
union
{
@@ -244,10 +244,11 @@ extern void _obstack_newchunk (struct obstack *, _OBSTACK_INDEX_T);
extern void _obstack_free (struct obstack *, void *);
extern int _obstack_begin (struct obstack *,
_OBSTACK_INDEX_T, _OBSTACK_INDEX_T,
void *(*) (size_t), void (*) (void *));
void *(*) (_OBSTACK_CHUNK_SIZE_T),
void (*) (void *));
extern int _obstack_begin_1 (struct obstack *,
_OBSTACK_INDEX_T, _OBSTACK_INDEX_T,
void *(*) (void *, size_t),
void *(*) (void *, _OBSTACK_CHUNK_SIZE_T),
void (*) (void *, void *), void *);
extern _OBSTACK_INDEX_T _obstack_memory_used (struct obstack *)
__attribute_pure__;
@@ -283,26 +284,33 @@ extern int obstack_exit_failure;
/* To prevent prototype warnings provide complete argument list. */
#define obstack_init(h) \
_obstack_begin ((h), 0, 0, \
_OBSTACK_CAST (void *(*) (size_t), obstack_chunk_alloc), \
_OBSTACK_CAST (void *(*) (_OBSTACK_CHUNK_SIZE_T), \
obstack_chunk_alloc), \
_OBSTACK_CAST (void (*) (void *), obstack_chunk_free))
#define obstack_begin(h, size) \
_obstack_begin ((h), (size), 0, \
_OBSTACK_CAST (void *(*) (size_t), obstack_chunk_alloc), \
_OBSTACK_CAST (void *(*) (_OBSTACK_CHUNK_SIZE_T), \
obstack_chunk_alloc), \
_OBSTACK_CAST (void (*) (void *), obstack_chunk_free))
#define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
_obstack_begin ((h), (size), (alignment), \
_OBSTACK_CAST (void *(*) (size_t), chunkfun), \
_OBSTACK_CAST (void *(*) (_OBSTACK_CHUNK_SIZE_T), \
chunkfun), \
_OBSTACK_CAST (void (*) (void *), freefun))
#define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
_obstack_begin_1 ((h), (size), (alignment), \
_OBSTACK_CAST (void *(*) (void *, size_t), chunkfun), \
_OBSTACK_CAST (void *(*) (void *, _OBSTACK_CHUNK_SIZE_T), \
chunkfun), \
_OBSTACK_CAST (void (*) (void *, void *), freefun), arg)
#define obstack_chunkfun(h, newchunkfun) \
((void) ((h)->chunkfun.extra = (void *(*) (void *, size_t)) (newchunkfun)))
((void) \
((h)->chunkfun.extra = _OBSTACK_CAST (void *(*) (void *, \
_OBSTACK_CHUNK_SIZE_T), \
newchunkfun)))
#define obstack_freefun(h, newfreefun) \
((void) ((h)->freefun.extra = (void *(*) (void *, void *)) (newfreefun)))