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

Michael Niedermayer michaelni
Thu Sep 3 03:05:45 CEST 2009


On Wed, Sep 02, 2009 at 03:32:26PM +0100, M?ns Rullg?rd wrote:
> 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?

no, it just feels unneeded because i cant think of any case where we
would use it, all cases i can think of have a single "fail" target
that frees resources

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Opposition brings concord. Out of discord comes the fairest harmony.
-- Heraclitus
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-cvslog/attachments/20090903/4844689a/attachment-0001.pgp>



More information about the ffmpeg-cvslog mailing list