libobs: Add OBS_NORETURN and use it for crash handler

Fixes some analyzers flagging code after a crashing path makes it
impossible to reach.
This commit is contained in:
Richard Stanway 2021-12-09 02:40:51 +01:00
parent b92e941b4f
commit b37acbcbc1
3 changed files with 6 additions and 10 deletions

View File

@ -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;

View File

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

View File

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