[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