[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