mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-25 03:01:03 +00:00
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 https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/59#note_576422 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/573>
This commit is contained in:
parent
cb5d31a2fb
commit
cd6bc944f9
2 changed files with 3 additions and 14 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue