On 09/30/2010 09:37 AM, Karel Klic wrote:
Dne 29.9.2010 16:34, Jiri Moskovcak napsal(a):
> On 09/29/2010 04:29 PM, Nikola Pajkovsky wrote:
>> On 09/29/2010 03:22 PM, Jiri Moskovcak wrote:
>>> On 09/29/2010 01:17 PM, Nikola Pajkovsky wrote:
>>>> +void *xcalloc(size_t nmemb, size_t size)
>>>> +{
>>>> + void *ptr = calloc(nmemb, size);
>>>> + if (!ptr&& (!nmemb || !size))
>>>
>>> - I think you want if (!ptr&& (!nmemb&& !size))
>>>
>> Nope. NULL may also be returned by a successful call to malloc() with a size of
zero,
>> or by a successful call to calloc() with nmemb *or* size equal to zero.
>>
>
> exactly and it's not "out of memory" problem
>
I think it should be "if (!ptr&& nmemb&& size)
die_out_of_memory();"
If the allocation returns NULL, and both nmemb and size are nonzero,
something is wrong. If nmemb or size is zero, calloc can return NULL
validly (at least the man page says so).
IMHO it's ok when xcalloc(0, 1) returns NULL, because if you called
that, you did not intend to touch the pointer anyway (because you wanted
*zero* members of size 1 and you got them).
- thank you Karel, that's exaclty what I meant in my first message, the
problem here is that the x* function are not supposed to return NULL,
but they shouldn't die when there is no error...
J.
>>>> + die_out_of_memory();
>>>> + return ptr;
>>>> +}
>>>> +
_______________________________________________
Crash-catcher mailing list
Crash-catcher(a)lists.fedorahosted.org
https://fedorahosted.org/mailman/listinfo/crash-catcher