This is the mail archive of the gsl-discuss@sourceware.org mailing list for the GSL 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: free


X-posted and Followup-To: GSL discuss

John D Lamb <J.D.Lamb@btinternet.com> writes:

> Jochen Küpper wrote:

>>> gsl_matrix_alloc and gsl_matrix free behave like alloc and free and
>>> so I guess gsl_matrix_alloc returns 0 on failure and gsl_matrix_free
>>> should not be called with a null pointer.

[...]

>> Actually it should be ok to call free with NULL, just not with any
>> other invalid pointer:
>>
>> ,----[man free]
>> |      free()  frees the  memory space  pointed to  by ptr,  which must  have been
>> |      returned by a previous call to malloc(), calloc() or realloc().  Otherwise,
>> |      or if free(ptr) has already been called before, undefined behaviour occurs.
>> |      If ptr is NULL, no operation is performed.
>> `----

[...]

> I checked the source code for gsl_matrix_free and it will fail if passed
> a null pointer.

Shouldn't the GSL free-routines be changed like the following patch?
,----
| @@ -74,6 +74,8 @@
|  void
|  FUNCTION (gsl_block, free) (TYPE (gsl_block) * b)
|  {
| -  free (b->data);
| -  free (b);
| +    if(b != 0) {
| +        free (b->data);
| +        free (b);
| +    }
|  }
`----

Greetings,
Jochen
-- 
Einigkeit und Recht und Freiheit                http://www.Jochen-Kuepper.de
    Liberté, Égalité, Fraternité                GnuPG key: CC1B0B4D
        (Part 3 you find in my messages before fall 2003.)


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