summaryrefslogtreecommitdiff
path: root/epan
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2016-04-05 22:49:05 +0200
committerPeter Wu <peter@lekensteyn.nl>2016-04-08 17:34:10 +0000
commit57b2a84f3d900eb0b98157095c6aac07cec54fd9 (patch)
treeec069513b90f83bbb31843a17204ffb0fb97fa69 /epan
parent434bbd67a06803ce6bb9a8e0adc6d596246bc458 (diff)
downloadwireshark-57b2a84f3d900eb0b98157095c6aac07cec54fd9.tar.gz
Use a single WS_NORETURN macro
Having to define two macros for marking a function as never returning seems a bit redundant. Merge the MSVC and GCC-like attributes into a single WS_NORETURN. Tested with Clang 3.7.1, GCC 4.4.7 and even GCC 4.1.2 using this small program (-Wall -Wextra, the first two generate warnings for uninitialized variables, the last one compiles without warnings): #include <stdlib.h> __attribute__((noreturn)) void foo() { exit(1); } __attribute__((noreturn)) void bar(); void bar() { exit(1); } int main() { int j, i; if (i) { bar(); return j; } foo(); return j; } Change-Id: I7d19c15e61b8f8fa4936864407199c4109f8cc82 Reviewed-on: https://code.wireshark.org/review/14822 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Guy Harris <guy@alum.mit.edu> Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Diffstat (limited to 'epan')
-rw-r--r--epan/except.c10
-rw-r--r--epan/except.h10
-rw-r--r--epan/proto.h2
3 files changed, 11 insertions, 11 deletions
diff --git a/epan/except.c b/epan/except.c
index de6021c362..881796ebd8 100644
--- a/epan/except.c
+++ b/epan/except.c
@@ -180,7 +180,7 @@ static int match(const volatile except_id_t *thrown, const except_id_t *caught)
return group_match && code_match;
}
-G_GNUC_NORETURN WS_MSVC_NORETURN static void do_throw(except_t *except)
+WS_NORETURN static void do_throw(except_t *except)
{
struct except_stacknode *top;
@@ -261,7 +261,7 @@ struct except_stacknode *except_pop(void)
return top;
}
-G_GNUC_NORETURN WS_MSVC_NORETURN void except_rethrow(except_t *except)
+WS_NORETURN void except_rethrow(except_t *except)
{
struct except_stacknode *top = get_top();
assert (top != 0);
@@ -271,7 +271,7 @@ G_GNUC_NORETURN WS_MSVC_NORETURN void except_rethrow(except_t *except)
do_throw(except);
}
-G_GNUC_NORETURN WS_MSVC_NORETURN void except_throw(long group, long code, const char *msg)
+WS_NORETURN void except_throw(long group, long code, const char *msg)
{
except_t except;
@@ -289,7 +289,7 @@ G_GNUC_NORETURN WS_MSVC_NORETURN void except_throw(long group, long code, const
do_throw(&except);
}
-G_GNUC_NORETURN WS_MSVC_NORETURN void except_throwd(long group, long code, const char *msg, void *data)
+WS_NORETURN void except_throwd(long group, long code, const char *msg, void *data)
{
except_t except;
@@ -306,7 +306,7 @@ G_GNUC_NORETURN WS_MSVC_NORETURN void except_throwd(long group, long code, const
* XCEPT_BUFFER_SIZE? We could then just use this to generate formatted
* messages.
*/
-G_GNUC_NORETURN WS_MSVC_NORETURN void except_throwf(long group, long code, const char *fmt, ...)
+WS_NORETURN void except_throwf(long group, long code, const char *fmt, ...)
{
char *buf = (char *)except_alloc(XCEPT_BUFFER_SIZE);
va_list vl;
diff --git a/epan/except.h b/epan/except.h
index 063218274a..0f979637e9 100644
--- a/epan/except.h
+++ b/epan/except.h
@@ -92,11 +92,11 @@ WS_DLL_PUBLIC struct except_stacknode *except_pop(void);
/* public interface functions */
WS_DLL_PUBLIC int except_init(void);
WS_DLL_PUBLIC void except_deinit(void);
-WS_DLL_PUBLIC WS_MSVC_NORETURN void except_rethrow(except_t *) G_GNUC_NORETURN;
-WS_DLL_PUBLIC WS_MSVC_NORETURN void except_throw(long, long, const char *) G_GNUC_NORETURN;
-WS_DLL_PUBLIC WS_MSVC_NORETURN void except_throwd(long, long, const char *, void *) G_GNUC_NORETURN;
-WS_DLL_PUBLIC WS_MSVC_NORETURN void except_throwf(long, long, const char *, ...)
- G_GNUC_NORETURN G_GNUC_PRINTF(3, 4);
+WS_DLL_PUBLIC WS_NORETURN void except_rethrow(except_t *);
+WS_DLL_PUBLIC WS_NORETURN void except_throw(long, long, const char *);
+WS_DLL_PUBLIC WS_NORETURN void except_throwd(long, long, const char *, void *);
+WS_DLL_PUBLIC WS_NORETURN void except_throwf(long, long, const char *, ...)
+ G_GNUC_PRINTF(3, 4);
WS_DLL_PUBLIC void (*except_unhandled_catcher(void (*)(except_t *)))(except_t *);
extern unsigned long except_code(except_t *);
extern unsigned long except_group(except_t *);
diff --git a/epan/proto.h b/epan/proto.h
index 7d6ce083c2..9119038dcf 100644
--- a/epan/proto.h
+++ b/epan/proto.h
@@ -120,7 +120,7 @@ typedef struct _protocol protocol_t;
*
* @param message string to use as the message
*/
-WS_DLL_PUBLIC WS_MSVC_NORETURN void proto_report_dissector_bug(const char *message) G_GNUC_NORETURN;
+WS_DLL_PUBLIC WS_NORETURN void proto_report_dissector_bug(const char *message);
#define REPORT_DISSECTOR_BUG(message) \
proto_report_dissector_bug(message)