1
mirror of https://code.videolan.org/videolan/vlc synced 2024-09-28 23:09:59 +02:00

Introduce VLC_NORETURN function attribute and use it

Note that this attribute implies that the function never returns in
any circumstances (it exits, it aborts or it gets cancelled).
Do not use this attribute for function that do not return at the end
but may return from other branches.
This commit is contained in:
Rémi Denis-Courmont 2011-08-17 18:42:04 +03:00
parent 9fd4a6a6ba
commit f7db1e80a3
8 changed files with 9 additions and 3 deletions

View File

@ -92,6 +92,7 @@
# define VLC_FORMAT_ARG(x) __attribute__ ((format_arg(x)))
# define VLC_MALLOC __attribute__ ((malloc))
# define VLC_NORETURN __attribute__ ((noreturn))
# if VLC_GCC_VERSION(3,4)
# define VLC_USED __attribute__ ((warn_unused_result))
@ -104,6 +105,7 @@
# define VLC_FORMAT(x,y)
# define VLC_FORMAT_ARG(x)
# define VLC_MALLOC
# define VLC_NORETURN
# define VLC_USED
#endif

View File

@ -1554,6 +1554,7 @@ static int mms_HeaderMediaRead( access_t *p_access, int i_type )
return -1;
}
VLC_NORETURN
static void *KeepAliveThread( void *p_data )
{
access_t *p_access = p_data;

View File

@ -1963,6 +1963,7 @@ static void TaskInterruptData( void *p_private )
/*****************************************************************************
*
*****************************************************************************/
VLC_NORETURN
static void* TimeoutPrevention( void *p_data )
{
timeout_thread_t *p_timeout = (timeout_thread_t *)p_data;

View File

@ -112,6 +112,7 @@ static void Inhibit (vlc_inhibit_t *ih, bool suspend)
extern char **environ;
VLC_NORETURN
static void *Thread (void *data)
{
vlc_inhibit_t *ih = data;

View File

@ -200,6 +200,7 @@ static void Close( vlc_object_t *p_this )
/*****************************************************************************
* Run: main thread
*****************************************************************************/
VLC_NORETURN
static void *Run( void *data )
{
services_discovery_t *p_sd = data;

View File

@ -1018,6 +1018,7 @@ struct vlc_timer
vlc_atomic_t overruns;
};
VLC_NORETURN
static void *vlc_timer_thread (void *data)
{
struct vlc_timer *timer = data;

View File

@ -170,6 +170,7 @@ static void AddressDestroy (sap_address_t *addr)
* \param p_this the SAP Handler object
* \return nothing
*/
VLC_NORETURN
static void *RunThread (void *self)
{
sap_address_t *addr = self;

View File

@ -538,9 +538,7 @@ static void VoutDisplayEventMouse(vout_display_t *vd, int event, va_list args)
vlc_mutex_unlock(&osys->lock);
}
#ifdef __GNUC__
static void *VoutDisplayEventKeyDispatch(void *data) __attribute__((noreturn));
#endif
VLC_NORETURN
static void *VoutDisplayEventKeyDispatch(void *data)
{
vout_display_owner_sys_t *osys = data;