make obstack object allocators more type-safe
Commit Message
This changes OBSTACK_ZALLOC and OBSTACK_CALLOC to cast their value to
the correct type. This is more type-safe and also is more in line
with the other object-allocation macros in libiberty.h.
Making this change revealed one trivial error in dwarf2read.c.
On the whole that seems pretty good to me.
Tested by rebuilding.
2014-06-13 Tom Tromey <tromey@redhat.com>
* dwarf2read.c (dw2_get_real_path): Use correct type in
OBSTACK_CALLOC.
* gdb_obstack.h (OBSTACK_ZALLOC, OBSTACK_CALLOC): Cast result.
---
gdb/ChangeLog | 6 ++++++
gdb/dwarf2read.c | 2 +-
gdb/gdb_obstack.h | 6 +++---
3 files changed, 10 insertions(+), 4 deletions(-)
Comments
On 06/13/2014 08:10 PM, Tom Tromey wrote:
> This changes OBSTACK_ZALLOC and OBSTACK_CALLOC to cast their value to
> the correct type. This is more type-safe and also is more in line
> with the other object-allocation macros in libiberty.h.
>
> Making this change revealed one trivial error in dwarf2read.c.
> On the whole that seems pretty good to me.
Agreed.
>
> Tested by rebuilding.
>
> 2014-06-13 Tom Tromey <tromey@redhat.com>
>
> * dwarf2read.c (dw2_get_real_path): Use correct type in
> OBSTACK_CALLOC.
> * gdb_obstack.h (OBSTACK_ZALLOC, OBSTACK_CALLOC): Cast result.
Looks fine to me ...
>>>>> "Tom" == Tom Tromey <tromey@redhat.com> writes:
Tom> 2014-06-13 Tom Tromey <tromey@redhat.com>
Tom> * dwarf2read.c (dw2_get_real_path): Use correct type in
Tom> OBSTACK_CALLOC.
Tom> * gdb_obstack.h (OBSTACK_ZALLOC, OBSTACK_CALLOC): Cast result.
I'm checking this in now.
Tom
@@ -3297,7 +3297,7 @@ dw2_get_real_path (struct objfile *objfile,
{
if (qfn->real_names == NULL)
qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
- qfn->num_file_names, char *);
+ qfn->num_file_names, const char *);
if (qfn->real_names[index] == NULL)
qfn->real_names[index] = gdb_realpath (qfn->file_names[index]);
@@ -25,11 +25,11 @@
/* Utility macros - wrap obstack alloc into something more robust. */
#define OBSTACK_ZALLOC(OBSTACK,TYPE) \
- (memset (obstack_alloc ((OBSTACK), sizeof (TYPE)), 0, sizeof (TYPE)))
+ ((TYPE *) memset (obstack_alloc ((OBSTACK), sizeof (TYPE)), 0, sizeof (TYPE)))
#define OBSTACK_CALLOC(OBSTACK,NUMBER,TYPE) \
- (memset (obstack_alloc ((OBSTACK), (NUMBER) * sizeof (TYPE)), \
- 0, (NUMBER) * sizeof (TYPE)))
+ ((TYPE *) memset (obstack_alloc ((OBSTACK), (NUMBER) * sizeof (TYPE)), \
+ 0, (NUMBER) * sizeof (TYPE)))
/* Unless explicitly specified, GDB obstacks always use xmalloc() and
xfree(). */