summaryrefslogtreecommitdiffstats
path: root/src/installation_proxy.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/installation_proxy.c')
-rw-r--r--src/installation_proxy.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/installation_proxy.c b/src/installation_proxy.c
index d17d6c5..9a11e36 100644
--- a/src/installation_proxy.c
+++ b/src/installation_proxy.c
@@ -120,6 +120,8 @@ LIBIMOBILEDEVICE_API instproxy_error_t instproxy_client_free(instproxy_client_t
if (client->status_updater) {
debug_info("joining status_updater");
thread_join(client->status_updater);
+ thread_free(client->status_updater);
+ client->status_updater = (thread_t)NULL;
}
mutex_destroy(&client->mutex);
free(client);
@@ -320,7 +322,7 @@ static instproxy_error_t instproxy_perform_operation(instproxy_client_t client,
* @return Always NULL.
*/
static void* instproxy_status_updater(void* arg)
-{
+{
struct instproxy_status_data *data = (struct instproxy_status_data*)arg;
/* run until the operation is complete or an error occurs */
@@ -332,7 +334,10 @@ static void* instproxy_status_updater(void* arg)
if (data->operation) {
free(data->operation);
}
- data->client->status_updater = (thread_t)NULL;
+ if (data->client->status_updater) {
+ thread_free(data->client->status_updater);
+ data->client->status_updater = (thread_t)NULL;
+ }
instproxy_unlock(data->client);
free(data);
@@ -367,7 +372,7 @@ static instproxy_error_t instproxy_create_status_updater(instproxy_client_t clie
data->operation = strdup(operation);
data->user_data = user_data;
- if (thread_create(&client->status_updater, instproxy_status_updater, data) == 0) {
+ if (thread_new(&client->status_updater, instproxy_status_updater, data) == 0) {
res = INSTPROXY_E_SUCCESS;
}
}