X-posted and Followup-To: GSL discuss
John D Lamb <[EMAIL PROTECTED]> 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.)