summaryrefslogtreecommitdiff
path: root/comms/asterisk/patches/patch-include_asterisk_utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'comms/asterisk/patches/patch-include_asterisk_utils.h')
-rw-r--r--comms/asterisk/patches/patch-include_asterisk_utils.h44
1 files changed, 33 insertions, 11 deletions
diff --git a/comms/asterisk/patches/patch-include_asterisk_utils.h b/comms/asterisk/patches/patch-include_asterisk_utils.h
index f04380ca7b4..6d9e59481a3 100644
--- a/comms/asterisk/patches/patch-include_asterisk_utils.h
+++ b/comms/asterisk/patches/patch-include_asterisk_utils.h
@@ -1,18 +1,40 @@
-$NetBSD: patch-include_asterisk_utils.h,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
+$NetBSD: patch-include_asterisk_utils.h,v 1.2 2015/05/19 07:52:14 jnemeth Exp $
---- include/asterisk/utils.h.orig 2013-04-30 13:46:53.000000000 +0000
+--- include/asterisk/utils.h.orig 2015-03-12 12:26:57.000000000 +0000
+++ include/asterisk/utils.h
-@@ -926,10 +926,9 @@ char *ast_utils_which(const char *binary
- * }
+@@ -943,30 +943,9 @@ char *ast_utils_which(const char *binary
* \encode
*/
--#define RAII_VAR(vartype, varname, initval, dtor) \
-- /* Prototype needed due to http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36774 */ \
-- auto void _dtor_ ## varname (vartype * v); \
-- void _dtor_ ## varname (vartype * v) { dtor(*v); } \
+
+-#if defined(__clang__)
+-
+-#if defined(__has_feature) && __has_feature(blocks)
+-typedef void (^_raii_cleanup_block_t)(void);
+-static inline void _raii_cleanup_block(_raii_cleanup_block_t *b) { (*b)(); }
+-
+-#define RAII_VAR(vartype, varname, initval, dtor) \
+- _raii_cleanup_block_t _raii_cleanup_ ## varname __attribute__((cleanup(_raii_cleanup_block),unused)) = NULL; \
+- vartype varname = initval; \
+- _raii_cleanup_ ## varname = ^{ dtor(varname); }
+-
+-#else
+- #error "CLANG must support the 'blocks' feature to compile Asterisk."
+-#endif /* #if defined(__has_feature) && __has_feature(blocks) */
+-
+-#elif defined(__GNUC__)
+-
+-#define RAII_VAR(vartype, varname, initval, dtor) \
+- auto void _dtor_ ## varname (vartype * v); \
+- void _dtor_ ## varname (vartype * v) { dtor(*v); } \
+- vartype varname __attribute__((cleanup(_dtor_ ## varname))) = (initval)
+-
+-#else
+- #error "Cannot compile Asterisk: unknown and unsupported compiler."
+-#endif /* #if __GNUC__ */
+-
+#define RAII_DECL(vartype, varname, dtor) \
-+ static void _dtor_ ## varname (vartype * v) { dtor(*v); }
++ static void _dtor_ ## varname (vartype * v) { dtor(*v); }
+#define RAII_VAR(vartype, varname, initval) \
- vartype varname __attribute__((cleanup(_dtor_ ## varname))) = (initval)
-
++ vartype varname __attribute__((cleanup(_dtor_ ## varname))) = (initval)
++
#endif /* _ASTERISK_UTILS_H */