Quellcode durchsuchen

libobs: Add OBS_NORETURN and use it for crash handler

Fixes some analyzers flagging code after a crashing path makes it
impossible to reach.
Richard Stanway vor 3 Jahren
Ursprung
Commit
b37acbcbc1
3 geänderte Dateien mit 6 neuen und 10 gelöschten Zeilen
  1. 3 9
      libobs/util/base.c
  2. 1 1
      libobs/util/base.h
  3. 2 0
      libobs/util/c99defs.h

+ 3 - 9
libobs/util/base.c

@@ -62,14 +62,8 @@ static void def_log_handler(int log_level, const char *format, va_list args,
 	UNUSED_PARAMETER(param);
 }
 
-#ifdef _MSC_VER
-#define NORETURN __declspec(noreturn)
-#else
-#define NORETURN __attribute__((noreturn))
-#endif
-
-NORETURN static void def_crash_handler(const char *format, va_list args,
-				       void *param)
+OBS_NORETURN static void def_crash_handler(const char *format, va_list args,
+					   void *param)
 {
 	vfprintf(stderr, format, args);
 	exit(0);
@@ -104,7 +98,7 @@ void base_set_crash_handler(void (*handler)(const char *, va_list, void *),
 	crash_handler = handler;
 }
 
-void bcrash(const char *format, ...)
+OBS_NORETURN void bcrash(const char *format, ...)
 {
 	va_list args;
 

+ 1 - 1
libobs/util/base.h

@@ -85,7 +85,7 @@ EXPORT void blogva(int log_level, const char *format, va_list args);
 PRINTFATTR(2, 3)
 EXPORT void blog(int log_level, const char *format, ...);
 PRINTFATTR(1, 2)
-EXPORT void bcrash(const char *format, ...);
+OBS_NORETURN EXPORT void bcrash(const char *format, ...);
 
 #undef PRINTFATTR
 

+ 2 - 0
libobs/util/c99defs.h

@@ -25,9 +25,11 @@
 
 #ifdef _MSC_VER
 #define OBS_DEPRECATED __declspec(deprecated)
+#define OBS_NORETURN __declspec(noreturn)
 #define FORCE_INLINE __forceinline
 #else
 #define OBS_DEPRECATED __attribute__((deprecated))
+#define OBS_NORETURN __attribute__((noreturn))
 #define FORCE_INLINE inline __attribute__((always_inline))
 #endif