]> git.ipfire.org Git - thirdparty/gnulib.git/commitdiff
obstack: size_t → _OBSTACK_CHUNK_SIZE_T
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 5 May 2025 21:02:15 +0000 (14:02 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 5 May 2025 21:16:20 +0000 (14:16 -0700)
* 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.

ChangeLog
lib/obstack.c
lib/obstack.in.h

index 771309c182d625bf5dbe9b37571bff5d21ea23d7..403140cdf8fccec0b73ea7362df1bd29fa864af7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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 glibc’s 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.
index cd762e08f2d792422009d787fc9163ceaf8e4d66..b5cf0d514b16856da11d6c88f5265ded955c9f90 100644 (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)
 {
index 4f79f40e94d3e5c76e55ea6b2091378190a49959..0f2677dba45016e225b0880d31122a0930caf934 100644 (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)))