From 0965ae7d651c32b206ed7aa92243d7fa497145c9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Thu, 28 Aug 2008 23:57:08 +0300 Subject: [PATCH] vlc_join: check for deadlock --- include/vlc_threads.h | 2 +- src/misc/threads.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/include/vlc_threads.h b/include/vlc_threads.h index 76bb135f0d..8f60d75ca3 100644 --- a/include/vlc_threads.h +++ b/include/vlc_threads.h @@ -179,7 +179,7 @@ VLC_EXPORT( void, __vlc_thread_join, ( vlc_object_t *, const char *, int ) ); VLC_EXPORT( int, vlc_clone, (vlc_thread_t *, void * (*) (void *), void *, int) ); VLC_EXPORT( void, vlc_cancel, (vlc_thread_t) ); -VLC_EXPORT( int, vlc_join, (vlc_thread_t, void **) ); +VLC_EXPORT( void, vlc_join, (vlc_thread_t, void **) ); VLC_EXPORT (void, vlc_control_cancel, (int cmd, ...)); #ifndef LIBVLC_USE_PTHREAD_CANCEL diff --git a/src/misc/threads.c b/src/misc/threads.c index a296b4b12c..78efab1a84 100644 --- a/src/misc/threads.c +++ b/src/misc/threads.c @@ -621,10 +621,12 @@ void vlc_cancel (vlc_thread_t thread_id) * @param p_result [OUT] pointer to write the thread return value or NULL * @return 0 on success, a standard error code otherwise. */ -int vlc_join (vlc_thread_t handle, void **result) +void vlc_join (vlc_thread_t handle, void **result) { #if defined( LIBVLC_USE_PTHREAD ) - return pthread_join (handle, result); + int val = pthread_join (handle, result); + if (val) + vlc_pthread_fatal ("joining thread", val, __FILE__, __LINE__); #elif defined( UNDER_CE ) || defined( WIN32 ) do @@ -636,15 +638,13 @@ int vlc_join (vlc_thread_t handle, void **result) if (result) *result = handle->data; free (handle); - return 0; #elif defined( HAVE_KERNEL_SCHEDULER_H ) int32_t exit_value; - ret = (B_OK == wait_for_thread( p_priv->thread_id, &exit_value )); - if( !ret && result ) + int val = (B_OK == wait_for_thread( p_priv->thread_id, &exit_value )); + if( !val && result ) *result = (void *)exit_value; - return ret; #endif } -- 2.39.5