Make it possible to rename obstack_free.
authorBruno Haible <bruno@clisp.org>
Mon, 23 Oct 2006 19:40:24 +0000 (19:40 +0000)
committerBruno Haible <bruno@clisp.org>
Mon, 23 Oct 2006 19:40:24 +0000 (19:40 +0000)
ChangeLog
lib/obstack.c
lib/obstack.h

index a9eb085..31406db 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,15 @@
 2006-10-23  Bruno Haible  <bruno@clisp.org>
             Paul Eggert  <eggert@cs.ucla.edu>
 
+       Ability to rename obstack_free.
+       * lib/obstack.h (__obstack_free): New macro. Declare instead of
+       obstack_free.
+       (obstack_free): Invoke the __obstack_free macro.
+       * lib/obstack.c (obstack_free): Use __obstack_free macro.
+
+2006-10-23  Bruno Haible  <bruno@clisp.org>
+            Paul Eggert  <eggert@cs.ucla.edu>
+
        * lib/argp.h (argp_parse, __argp_parse): Comment out the identifiers
        __argc, __argv from the declaration. (They are defined as macros on
        mingw.)
index 1bbf62b..5cd0b7a 100644 (file)
@@ -342,7 +342,7 @@ _obstack_allocated_p (struct obstack *h, void *obj)
 # undef obstack_free
 
 void
-obstack_free (struct obstack *h, void *obj)
+__obstack_free (struct obstack *h, void *obj)
 {
   register struct _obstack_chunk *lp;  /* below addr of any objects in this chunk */
   register struct _obstack_chunk *plp; /* point to previous chunk if any */
index 95dd438..3315dfe 100644 (file)
@@ -1,5 +1,5 @@
 /* obstack.h - object stack macros
-   Copyright (C) 1988-1994,1996-1999,2003,2004,2005
+   Copyright (C) 1988-1994,1996-1999,2003,2004,2005,2006
        Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -186,7 +186,12 @@ extern int _obstack_begin_1 (struct obstack *, int, int,
                             void (*) (void *, void *), void *);
 extern int _obstack_memory_used (struct obstack *);
 
-void obstack_free (struct obstack *obstack, void *block);
+/* The default name of the function for freeing a chunk is 'obstack_free',
+   but gnulib users can override this by defining '__obstack_free'.  */
+#ifndef __obstack_free
+# define __obstack_free obstack_free
+#endif
+extern void __obstack_free (struct obstack *obstack, void *block);
 
 \f
 /* Error handler called when `obstack_chunk_alloc' failed to allocate
@@ -399,7 +404,7 @@ __extension__                                                               \
    void *__obj = (OBJ);                                                        \
    if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit)  \
      __o->next_free = __o->object_base = (char *)__obj;                        \
-   else (obstack_free) (__o, __obj); })
+   else (__obstack_free) (__o, __obj); })
 \f
 #else /* not __GNUC__ or not __STDC__ */
 
@@ -497,7 +502,7 @@ __extension__                                                               \
     && (h)->temp.tempint < (h)->chunk_limit - (char *) (h)->chunk))    \
    ? (int) ((h)->next_free = (h)->object_base                          \
            = (h)->temp.tempint + (char *) (h)->chunk)                  \
-   : (((obstack_free) ((h), (h)->temp.tempint + (char *) (h)->chunk), 0), 0)))
+   : (((__obstack_free) ((h), (h)->temp.tempint + (char *) (h)->chunk), 0), 0)))
 
 #endif /* not __GNUC__ or not __STDC__ */