changeset 995:f98b28e4e063

update from glibc
author Jim Meyering <jim@meyering.net>
date Fri, 22 Aug 1997 14:55:01 +0000
parents aa36172463a6
children 234fcf0ce396
files lib/obstack.c lib/obstack.h
diffstat 2 files changed, 13 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lib/obstack.c
+++ b/lib/obstack.c
@@ -85,7 +85,7 @@
 #endif
 
 /* Exit value used when `print_and_abort' is used.  */
-#if defined (__STDC__) && __STDC__
+#if defined __GNU_LIBRARY__ || defined HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
 #ifndef EXIT_FAILURE
--- a/lib/obstack.h
+++ b/lib/obstack.h
@@ -107,6 +107,10 @@
 #ifndef __OBSTACK_H__
 #define __OBSTACK_H__
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* We use subtraction of (char *) 0 instead of casting to int
    because on word-addressable machines a simple cast to int
    may ignore the byte-within-word field of the pointer.  */
@@ -303,13 +307,14 @@
 
 #define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
   _obstack_begin_1 ((h), (size), (alignment), \
-		    (void *(*) (long)) (chunkfun), (void (*) (void *)) (freefun), (arg))
+		    (void *(*) (void *, long)) (chunkfun), \
+		    (void (*) (void *, void *)) (freefun), (arg))
 
 #define obstack_chunkfun(h, newchunkfun) \
-  ((h) -> chunkfun = (struct _obstack_chunk *(*)(long)) (newchunkfun))
+  ((h) -> chunkfun = (struct _obstack_chunk *(*)(void *, long)) (newchunkfun))
 
 #define obstack_freefun(h, newfreefun) \
-  ((h) -> freefun = (void (*)(void *)) (newfreefun))
+  ((h) -> freefun = (void (*)(void *, struct _obstack_chunk *)) (newfreefun))
 
 #else
 
@@ -578,4 +583,8 @@
 
 #endif /* not __GNUC__ or not __STDC__ */
 
+#ifdef __cplusplus
+}	/* C++ */
+#endif
+
 #endif /* not __OBSTACK_H__ */