From 62341a95261446c9258f500b9d29efcb6c1a34f9 Mon Sep 17 00:00:00 2001 From: Mathieu Rene Date: Sun, 24 Jan 2010 19:23:58 +0000 Subject: [PATCH] POSIX says never to compare pthread_t directly git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16501 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/include/switch_apr.h | 6 ++++++ src/switch_apr.c | 10 ++++++++++ src/switch_core_session.c | 5 +---- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/include/switch_apr.h b/src/include/switch_apr.h index 64ddbd6776..e39f9cb15a 100644 --- a/src/include/switch_apr.h +++ b/src/include/switch_apr.h @@ -50,6 +50,12 @@ typedef pthread_t switch_thread_id_t; SWITCH_DECLARE(switch_thread_id_t) switch_thread_self(void); +/*! \brief Compare two thread ids + * \param tid1 1st Thread ID to compare + * \param tid2 2nd Thread ID to compare +*/ +SWITCH_DECLARE(int) switch_thread_equal(switch_thread_id_t tid1, switch_thread_id_t tid2); + /* The pieces of apr we allow ppl to pass around between modules we typedef into our namespace and wrap all the functions diff --git a/src/switch_apr.c b/src/switch_apr.c index dc5523968a..dfced1e700 100644 --- a/src/switch_apr.c +++ b/src/switch_apr.c @@ -79,6 +79,16 @@ SWITCH_DECLARE(switch_thread_id_t) switch_thread_self(void) #endif } +SWITCH_DECLARE(int) switch_thread_equal(switch_thread_id_t tid1, switch_thread_id_t tid2) +{ +#ifdef WIN32 + return (tid1 == tid2); +#else + return apr_os_thread_equal(tid1, tid2); +#endif + +} + SWITCH_DECLARE(void) switch_pool_clear(switch_memory_pool_t *p) { apr_pool_clear(p); diff --git a/src/switch_core_session.c b/src/switch_core_session.c index 10f7d9e667..7b4692ac3c 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -1143,10 +1143,7 @@ SWITCH_DECLARE(void) switch_core_session_disable_heartbeat(switch_core_session_t SWITCH_DECLARE(switch_bool_t) switch_core_session_in_thread(switch_core_session_t *session) { - if (switch_thread_self() == session->thread_id) { - return SWITCH_TRUE; - } - return SWITCH_FALSE; + return switch_thread_equal(switch_thread_self(), session->thread_id) ? SWITCH_TRUE : SWITCH_FALSE; } static void *SWITCH_THREAD_FUNC switch_core_session_thread(switch_thread_t *thread, void *obj)