[FFmpeg-cvslog] r19742 - trunk/libavutil/internal.h

Måns Rullgård mans
Tue Sep 1 17:16:36 CEST 2009


Benoit Fouet <benoit.fouet at free.fr> writes:

> On 2009-08-30 00:44, M?ns Rullg?rd wrote:
>> ramiro <subversion at mplayerhq.hu> writes:
>> 
>>> Author: ramiro
>>> Date: Sun Aug 30 00:38:48 2009
>>> New Revision: 19742
>>>
>>> Log:
>>> Add CHECKED_ALLOC macro.
>>> It works the same as CHECKED_ALLOCZ except that it does not zero the allocated
>>> memory.
>>>
>>> Modified:
>>>    trunk/libavutil/internal.h
>>>
>>> Modified: trunk/libavutil/internal.h
>>> ==============================================================================
>>> --- trunk/libavutil/internal.h	Sat Aug 29 23:04:18 2009	(r19741)
>>> +++ trunk/libavutil/internal.h	Sun Aug 30 00:38:48 2009	(r19742)
>>> @@ -249,6 +249,15 @@ if((y)<(x)){\
>>>  #define perror please_use_av_log_instead_of_perror
>>>  #endif
>>>
>>> +#define CHECKED_ALLOC(p, size)\
>>> +{\
>>> +    p= av_malloc(size);\
>>> +    if(p==NULL && (size)!=0){\
>>> +        av_log(NULL, AV_LOG_ERROR, "Cannot allocate memory.");\
>>> +        goto fail;\
>>> +    }\
>>> +}
>> 
>> Looks like I missed some discussions...  This should be wrapped in
>> do { } while(0) so if (foo) CHECKED_ALLOC(); else blah; can work.  It
>> would also be nice if the label to goto were an argument.  As it is,
>> you can only have one target per function that uses the macro.
>> Finally, it could do with some beautifying, but that's secondary.
>> 
>
> it would be cool to be able to pass an avctx too:
>
> #define CHECKED_ALLOC(ctx, p, size, label)                      \
> do {                                                            \
>     p = malloc(size);                                           \
>     if (!p && (size)){                                          \
>         av_log(ctx, AV_LOG_ERROR, "Cannot allocate memory.\n"); \
>         goto label;                                             \
>     }                                                           \
> } while (0)

While we're at it, shouldn't this have an FF_ prefix like other
macros?

-- 
M?ns Rullg?rd
mans at mansr.com



More information about the ffmpeg-cvslog mailing list