diff --git a/include/vlc_common.h b/include/vlc_common.h index 0c7966faa0..337fd8a0b7 100644 --- a/include/vlc_common.h +++ b/include/vlc_common.h @@ -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 diff --git a/modules/access/mms/mmstu.c b/modules/access/mms/mmstu.c index 4ea1cca335..b4b8bdbaa3 100644 --- a/modules/access/mms/mmstu.c +++ b/modules/access/mms/mmstu.c @@ -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; diff --git a/modules/demux/live555.cpp b/modules/demux/live555.cpp index ed08dbeaa6..abbc0caa91 100644 --- a/modules/demux/live555.cpp +++ b/modules/demux/live555.cpp @@ -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; diff --git a/modules/misc/inhibit/xdg.c b/modules/misc/inhibit/xdg.c index 20a24ff1ea..ac69a3dbff 100644 --- a/modules/misc/inhibit/xdg.c +++ b/modules/misc/inhibit/xdg.c @@ -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; diff --git a/modules/services_discovery/podcast.c b/modules/services_discovery/podcast.c index 5c936cfca8..2ad6356170 100644 --- a/modules/services_discovery/podcast.c +++ b/modules/services_discovery/podcast.c @@ -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; diff --git a/src/posix/thread.c b/src/posix/thread.c index 966c74cc5f..90645635fd 100644 --- a/src/posix/thread.c +++ b/src/posix/thread.c @@ -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; diff --git a/src/stream_output/sap.c b/src/stream_output/sap.c index 4a3b7c258c..181a423aa5 100644 --- a/src/stream_output/sap.c +++ b/src/stream_output/sap.c @@ -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; diff --git a/src/video_output/display.c b/src/video_output/display.c index a25c3bef72..c743836a01 100644 --- a/src/video_output/display.c +++ b/src/video_output/display.c @@ -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;