libc/stdlib/mallocr.c (unlink)

Earnie Boyd earnie_boyd@yahoo.com
Wed Feb 19 22:51:00 GMT 2003


What do you mean by ``circular''?  If the pointer value is capable of 
being zero it will SIGSEGV, on some systems, if referenced.

Earnie.

J. Johnston wrote:
> Actually, you are entirely correct.  I had forgotten that "both" the chunk
> and bin lists were circular.  The change will be reverted.
> 
> Earnie, you are going to have to do some more investigating.
> 
> -- Jeff J.
> 
> Christopher Faylor wrote:
> 
>> On Tue, Feb 18, 2003 at 05:35:14PM -0500, J. Johnston wrote:
>>
>>> Patch checked in, thanks.
>>
>>
>>
>> Isn't this a "why is the pointer NULL?" type of situation?  It seems like
>> checking for null is papering over a possible problem.
>>
>> cgf
>>
>>
>>>> ------------------------------------------------------------------------ 
>>>>
>>>>
>>>> 2003.02.18  Earnie Boyd  <earnie@users.sf.net>
>>>>
>>>>     * libc/stdlib/mallocr.c (unlink): Don't assign a value to a pointer
>>>>     with a NULL value.
>>>>
>>>> Index: mallocr.c
>>>> ===================================================================
>>>> RCS file: /cvs/src/src/newlib/libc/stdlib/mallocr.c,v
>>>> retrieving revision 1.9
>>>> diff -u -3 -p -r1.9 mallocr.c
>>>> --- mallocr.c    11 Oct 2002 10:28:30 -0000    1.9
>>>> +++ mallocr.c    18 Feb 2003 21:40:05 -0000
>>>> @@ -1936,8 +1936,8 @@ static void do_check_malloced_chunk(p, s
>>>> {                                                                         
>>>> \
>>>>  BK = 
>>>> P->bk;                                                              \
>>>>  FD = 
>>>> P->fd;                                                              \
>>>> -  FD->bk = 
>>>> BK;                                                            \
>>>> -  BK->fd = 
>>>> FD;                                                            \
>>>> +  if (FD) FD->bk = 
>>>> BK;                                                    \
>>>> +  if (BK) BK->fd = 
>>>> FD;                                                    \
>>>> }                                                                         
>>>> \
>>>>
>>>> /* Place p as the last remainder */
>>>
>>>
> 
> 



More information about the Newlib mailing list