On 07/09/2012 02:49 PM, Måns Rullgård wrote:
> Luca Barbato <lu_z...@gentoo.org> writes:
> 
>> On 07/09/2012 02:28 PM, Luca Barbato wrote:
>>> On 07/09/2012 12:18 PM, Måns Rullgård wrote:
>>>> Tomas Härdin <tomas.har...@codemill.se> writes:
>>>>
>>>>> On Sun, 2012-07-08 at 21:12 +0100, Måns Rullgård wrote:
>>>>>> Tomas Härdin <tomas.har...@codemill.se> writes:
>>>>>>> +void *av_calloc(size_t nmemb, size_t size)
>>>>>>> +{
>>>>>>> +    if (size <= 0 || nmemb >= INT_MAX / size)
>>>>>>> +        return NULL;
>>>>>>> +    return av_mallocz(nmemb * size);
>>>>>>> +}
>>>>>>
>>>>>> The places where this would be used don't in general need zeroed memory.
>>>>>
>>>>> Indeed, but calloc() zeroes memory so I'd say it's expected behavior.
>>>>
>>>> That's a ridiculous argument.  Give the function another name.
>>>>
>>>
>>> What about something along the lines of
>>>
>>> #define av_malloc_array(nmemb, size) \
>>>     av_malloc((size <= 0 || nmemb >= INT_MAX / size) ? 0 : nmemb * size);
>>>
>>> lu
>>>
>>
>> diff --git a/libavutil/mem.h b/libavutil/mem.h
>> index cd8490b..15b804d 100644
>> --- a/libavutil/mem.h
>> +++ b/libavutil/mem.h
>> @@ -79,6 +79,19 @@
>>  void *av_malloc(size_t size) av_malloc_attrib av_alloc_size(1);
>>
>>  /**
>> + * Helper macro to allocate a block of size * nmemb bytes with
>> + * using av_malloc()
>> + * @param nmemb Number of elements
>> + * @param size Size of the single element
>> + * @return Pointer to the allocated block, NULL if the block cannot
>> + * be allocated.
>> + * @see av_malloc()
>> + */
>> +
>> +#define av_malloc_array(nmemb, size) \
>> +    av_malloc((size <= 0 || nmemb >= INT_MAX / size) ? 0 : nmemb * size);
> 
> Please make this a function (inline or otherwise) to avoid any problems
> with multiple evaluation of arguments.
> 

Sure thing, was quicker to draft it here ^^;

lu


-- 

Luca Barbato
Gentoo/linux
http://dev.gentoo.org/~lu_zero

_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to