[FFmpeg-cvslog] r19742 - trunk/libavutil/internal.h
Benoit Fouet
benoit.fouet
Tue Sep 1 17:07:38 CEST 2009
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)
Ben
More information about the ffmpeg-cvslog
mailing list