type of obstack_base: char* or void*?
Jim Meyering
jim@meyering.net
Sun Jun 20 13:38:00 GMT 2004
The documentation says obstack_base has type `void *',
yet the code says it has type `char *':
char *object_base; /* address of object we are building */
...
#define obstack_base(h) ((h)->object_base)
though the unused function prototype says it's `void *':
void * obstack_base (struct obstack *obstack);
This came up because I found I needed a cast here,
contrary to what the documentation led me to expect:
size_t *length = (size_t *) obstack_base (&ds->len_stack);
So which should it be?
I think the documentation is right.
Here's a patch:
2004-06-20 Jim Meyering <jim@meyering.net>
* malloc/obstack.h (obstack_base): Cast to `void *', to align with
documentation.
Index: obstack.h
===================================================================
RCS file: /cvs/glibc/libc/malloc/obstack.h,v
retrieving revision 1.18
diff -u -p -r1.18 obstack.h
--- obstack.h 26 May 2004 06:37:12 -0000 1.18
+++ obstack.h 20 Jun 2004 13:35:01 -0000
@@ -194,7 +194,7 @@ extern int obstack_exit_failure;
Note that this might not be the final address of the object
because a new chunk might be needed to hold the final size. */
-#define obstack_base(h) ((h)->object_base)
+#define obstack_base(h) (void *)((h)->object_base)
/* Size for allocating ordinary chunks. */
More information about the Libc-alpha
mailing list