[FFmpeg-devel] [PATCH] avutil/common: add FFRET/FFGOTO macro
Muhammad Faiz
mfcc64 at gmail.com
Tue Dec 20 18:02:57 EET 2016
On 12/20/16, Michael Niedermayer <michael at niedermayer.cc> wrote:
> On Tue, Dec 20, 2016 at 09:05:56PM +0700, Muhammad Faiz wrote:
>> On 12/20/16, Michael Niedermayer <michael at niedermayer.cc> wrote:
>> > On Tue, Dec 20, 2016 at 04:38:34PM +0700, Muhammad Faiz wrote:
>> >> FFRET_ERR and FFGOTO_ERR for common error handling
>> >> FFRET_OOM and FFGOTO_OOM for oom handling
>> >>
>> >> Signed-off-by: Muhammad Faiz <mfcc64 at gmail.com>
>> >> ---
>> >> libavutil/common.h | 23 +++++++++++++++++++++++
>> >> 1 file changed, 23 insertions(+)
>> >>
>> >> diff --git a/libavutil/common.h b/libavutil/common.h
>> >> index 8142b31..b868d60 100644
>> >> --- a/libavutil/common.h
>> >> +++ b/libavutil/common.h
>> >> @@ -99,6 +99,29 @@
>> >> #define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a=
>> >> SWAP_tmp;}while(0)
>> >> #define FF_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0]))
>> >>
>> >> +/* Common error handling */
>> >> +#define FFRET_ERR(val, ...) \
>> >> + do { \
>> >> + int ffret_err_ret__ = (val); \
>> >> + if (ffret_err_ret__ < 0) { \
>> >> + __VA_ARGS__; \
>> >> + return ffret_err_ret__; \
>> >> + } \
>> >> + } while (0)
>> >> +
>> >> +#define FFGOTO_ERR(val, ret, dst, ...) \
>> >> + do { \
>> >> + int ffgoto_err_ret__ = (val); \
>> >> + if (ffgoto_err_ret__ < 0) { \
>> >> + ret = ffgoto_err_ret__; \
>> >> + __VA_ARGS__; \
>> >> + goto dst; \
>> >> + } \
>> >> + } while (0)
>> >> +
>> >> +#define FFRET_OOM(val, ...) FFRET_ERR((val) ? 0 : AVERROR(ENOMEM),
>> >> __VA_ARGS__)
>> >> +#define FFGOTO_OOM(val, ret, dst, ...) FFGOTO_ERR((val) ? 0 :
>> >> AVERROR(ENOMEM), ret, dst, __VA_ARGS__)
>> >
>> > complex macros makes code less accessable to new developers.
>> > it also makes code grep-ing harder
>> > i dont think this is a good idea
>>
>> if vaargs is removed, is this still considered complex?
>
> I think so, yes
OK, dropped
Thx
More information about the ffmpeg-devel
mailing list