Loading lib/curl_threads.c +17 −11 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms Loading Loading @@ -63,32 +63,38 @@ static void *curl_thread_create_thunk(void *arg) curl_thread_t Curl_thread_create(unsigned int (*func) (void*), void *arg) { curl_thread_t t; curl_thread_t t = malloc(sizeof(pthread_t)); struct curl_actual_call *ac = malloc(sizeof(struct curl_actual_call)); if(!ac) return curl_thread_t_null; if(!(ac && t)) goto err; ac->func = func; ac->arg = arg; if(pthread_create(&t, NULL, curl_thread_create_thunk, ac) != 0) { free(ac); return curl_thread_t_null; } if(pthread_create(t, NULL, curl_thread_create_thunk, ac) != 0) goto err; return t; err: free(t); free(ac); return curl_thread_t_null; } void Curl_thread_destroy(curl_thread_t hnd) { if(hnd != curl_thread_t_null) pthread_detach(hnd); if(hnd != curl_thread_t_null) { pthread_detach(*hnd); free(hnd); } } int Curl_thread_join(curl_thread_t *hnd) { int ret = (pthread_join(*hnd, NULL) == 0); int ret = (pthread_join(**hnd, NULL) == 0); free(*hnd); *hnd = curl_thread_t_null; return ret; Loading lib/curl_threads.h +2 −2 Original line number Diff line number Diff line Loading @@ -26,8 +26,8 @@ #if defined(USE_THREADS_POSIX) # define CURL_STDCALL # define curl_mutex_t pthread_mutex_t # define curl_thread_t pthread_t # define curl_thread_t_null (pthread_t)0 # define curl_thread_t pthread_t * # define curl_thread_t_null (pthread_t *)0 # define Curl_mutex_init(m) pthread_mutex_init(m, NULL) # define Curl_mutex_acquire(m) pthread_mutex_lock(m) # define Curl_mutex_release(m) pthread_mutex_unlock(m) Loading Loading
lib/curl_threads.c +17 −11 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms Loading Loading @@ -63,32 +63,38 @@ static void *curl_thread_create_thunk(void *arg) curl_thread_t Curl_thread_create(unsigned int (*func) (void*), void *arg) { curl_thread_t t; curl_thread_t t = malloc(sizeof(pthread_t)); struct curl_actual_call *ac = malloc(sizeof(struct curl_actual_call)); if(!ac) return curl_thread_t_null; if(!(ac && t)) goto err; ac->func = func; ac->arg = arg; if(pthread_create(&t, NULL, curl_thread_create_thunk, ac) != 0) { free(ac); return curl_thread_t_null; } if(pthread_create(t, NULL, curl_thread_create_thunk, ac) != 0) goto err; return t; err: free(t); free(ac); return curl_thread_t_null; } void Curl_thread_destroy(curl_thread_t hnd) { if(hnd != curl_thread_t_null) pthread_detach(hnd); if(hnd != curl_thread_t_null) { pthread_detach(*hnd); free(hnd); } } int Curl_thread_join(curl_thread_t *hnd) { int ret = (pthread_join(*hnd, NULL) == 0); int ret = (pthread_join(**hnd, NULL) == 0); free(*hnd); *hnd = curl_thread_t_null; return ret; Loading
lib/curl_threads.h +2 −2 Original line number Diff line number Diff line Loading @@ -26,8 +26,8 @@ #if defined(USE_THREADS_POSIX) # define CURL_STDCALL # define curl_mutex_t pthread_mutex_t # define curl_thread_t pthread_t # define curl_thread_t_null (pthread_t)0 # define curl_thread_t pthread_t * # define curl_thread_t_null (pthread_t *)0 # define Curl_mutex_init(m) pthread_mutex_init(m, NULL) # define Curl_mutex_acquire(m) pthread_mutex_lock(m) # define Curl_mutex_release(m) pthread_mutex_unlock(m) Loading