[FFmpeg-cvslog] r19742 - trunk/libavutil/internal.h
Måns Rullgård
mans
Wed Sep 2 16:32:26 CEST 2009
Michael Niedermayer <michaelni at gmx.at> writes:
> On Tue, Sep 01, 2009 at 04:16:36PM +0100, M?ns Rullg?rd wrote:
>> 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?
>
> and i think
> FF_ALLOC_OR_GOTO_FAIL(ctx, p, size)
> is best
Do you have a strong objection against passing the label as a
parameter?
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-cvslog
mailing list