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

Muhammad Faiz mfcc64 at gmail.com
Tue Dec 20 11:38:34 EET 2016


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
-- 
2.5.0



More information about the ffmpeg-devel mailing list