[FFmpeg-devel] [PATCH] avutil/common: add FFRET/FFGOTO macro

Muhammad Faiz mfcc64 at gmail.com
Tue Dec 20 17:00:36 EET 2016


On 12/20/16, wm4 <nfxjfg at googlemail.com> wrote:
> On Tue, 20 Dec 2016 16:38:34 +0700
> Muhammad Faiz <mfcc64 at gmail.com> 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__)
>> +
>>  /* misc math functions */
>>
>>  #ifdef HAVE_AV_CONFIG_H
>
> Please no, don't create a new language within C by littering everything
> with macros. The amount of code you'd save is minimal anyway.

OK, dropped

Thx


More information about the ffmpeg-devel mailing list