[vlc-commits] Introduce VLC_NORETURN function attribute and use it

Rémi Denis-Courmont git at videolan.org
Wed Aug 17 17:47:18 CEST 2011


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Wed Aug 17 18:42:04 2011 +0300| [f7db1e80a30c83036c2dfb11f54e37c4103b162d] | committer: Rémi Denis-Courmont

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.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f7db1e80a30c83036c2dfb11f54e37c4103b162d
---

 include/vlc_common.h                 |    2 ++
 modules/access/mms/mmstu.c           |    1 +
 modules/demux/live555.cpp            |    1 +
 modules/misc/inhibit/xdg.c           |    1 +
 modules/services_discovery/podcast.c |    1 +
 src/posix/thread.c                   |    1 +
 src/stream_output/sap.c              |    1 +
 src/video_output/display.c           |    4 +---
 8 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/include/vlc_common.h b/include/vlc_common.h
index 0c7966f..337fd8a 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 4ea1cca..b4b8bdb 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 ed08dbe..abbc0ca 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 20a24ff..ac69a3d 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 5c936cf..2ad6356 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 966c74c..9064563 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 4a3b7c2..181a423 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 a25c3be..c743836 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;



More information about the vlc-commits mailing list