This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: memset (0, 0, 0);


> 
> Hi Geoff,
> 
> Which xmalloc are you referring to? The xmalloc in this case is a gdb internal function, defined in gdb/utils.c:
> 
> PTR xmalloc (size_t size)
> {
>   return xmmalloc (NULL, size);
> }
> 
> And xmmalloc is:
> 
> void * xmmalloc (void *md, size_t size)
> {
>   void *val;
> 
>   if (size == 0)
>     {
>       val = NULL;
>     }
>   else
>     {
>       val = mmalloc (md, size);
>       if (val == NULL)
> 	nomem (size);
>     }
>   return (val);
> }
> 
> So size=0 does indeed return NULL. Also, I have single stepped this code to verify that this is actually what happens.

It looks as though that implementation of xmalloc doesn't match the 
general specification of xmalloc, which is that xmalloc must *never* 
return NULL (see libiberty/xmalloc.c for the specification).

I'm not sure why gdb is trying to provide its own implementation of these 
functions and not use those in libiberty.  Andrew?

R.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]