Commit cd6bc944 authored by Jan Alexander Steffens's avatar Jan Alexander Steffens Committed by GStreamer Marge Bot
Browse files

check: Always mark _ck_assert_failed as noreturn

So that we can use `fail` like `g_assert_not_reached`.

The comment is apparently wrong or outdated, as GCC considers it legal
for noreturn-marked functions to return using longjmp.

See the thread at
gst-plugins-ugly!59 (comment 576422)

Part-of: <!573>
parent cb5d31a2
Pipeline #180590 waiting for manual action with stages
in 2 minutes and 54 seconds
......@@ -384,13 +384,12 @@ _ck_assert_failed (const char *file, int line, const char *expr, ...)
va_end (ap);
send_failure_info (to_send);
if (cur_fork_status () == CK_FORK) {
#if defined(HAVE_FORK) && HAVE_FORK==1
if (cur_fork_status () == CK_FORK) {
_exit (1);
#endif /* HAVE_FORK */
} else {
longjmp (error_jmp_buffer, 1);
}
#endif /* HAVE_FORK */
longjmp (error_jmp_buffer, 1);
}
SRunner *
......
......@@ -422,20 +422,10 @@ static void __testname (int _i CK_ATTRIBUTE_UNUSED)\
/*
* This is called whenever an assertion fails.
* Note that it only has the noreturn modifier when
* using fork. If fork is unavailable, the function
* calls longjmp() when a test assertion fails. Marking
* the function as noreturn causes gcc to make assumptions
* which are not valid, as longjmp() is like a return.
*/
#if @HAVE_FORK@
CK_DLL_EXP void CK_EXPORT
_ck_assert_failed (const char *file, int line, const char *expr, ...)
CK_ATTRIBUTE_NORETURN;
#else
CK_DLL_EXP void CK_EXPORT _ck_assert_failed (const char *file, int line,
const char *expr, ...);
#endif
/**
* Fail the test if expression is false
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment