summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGustavo Sverzut Barbieri <barbieri@profusion.mobi>2016-11-10 00:05:49 -0200
committerGustavo Sverzut Barbieri <barbieri@profusion.mobi>2016-11-10 00:10:11 -0200
commit7917fa4ebfad0c02e9b054c3b6f0108fc8ec759f (patch)
treecffed44a9cfe324b29b62d3a4e60a05c9b95cb8c
parent9ad35a6fa213a420f532a4fc65059f7f24060135 (diff)
downloadefl-7917fa4ebfad0c02e9b054c3b6f0108fc8ec759f.tar.gz
efl_net_dialer_http: NULL-ify thread pointer when it's gone.
on thread cancel and end, we should nullify the pointer if it was still set.
-rw-r--r--src/lib/ecore_con/efl_net_dialer_http.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/lib/ecore_con/efl_net_dialer_http.c b/src/lib/ecore_con/efl_net_dialer_http.c
index af9f9fbb5b..4c3fdad554 100644
--- a/src/lib/ecore_con/efl_net_dialer_http.c
+++ b/src/lib/ecore_con/efl_net_dialer_http.c
@@ -1308,12 +1308,17 @@ _efl_net_dialer_http_libproxy_context_free(Efl_Net_Dialer_Http_Libproxy_Context
}
static void
-_efl_net_dialer_http_libproxy_end(void *data, Ecore_Thread *thread EINA_UNUSED)
+_efl_net_dialer_http_libproxy_end(void *data, Ecore_Thread *thread)
{
Efl_Net_Dialer_Http_Libproxy_Context *ctx = data;
Eo *o = ctx->o;
Efl_Net_Dialer_Http_Data *pd = efl_data_scope_get(o, MY_CLASS);
+ EINA_SAFETY_ON_NULL_RETURN(pd);
+
+ if (pd->libproxy_thread == thread)
+ pd->libproxy_thread = NULL;
+
if (ctx->proxy)
{
CURLcode r = curl_easy_setopt(pd->easy, CURLOPT_PROXY, ctx->proxy);
@@ -1364,7 +1369,10 @@ _efl_net_dialer_http_efl_net_dialer_dial(Eo *o, Efl_Net_Dialer_Http_Data *pd, co
Efl_Net_Dialer_Http_Libproxy_Context *ctx;
if (pd->libproxy_thread)
- ecore_thread_cancel(pd->libproxy_thread);
+ {
+ ecore_thread_cancel(pd->libproxy_thread);
+ pd->libproxy_thread = NULL;
+ }
ctx = calloc(1, sizeof(Efl_Net_Dialer_Http_Libproxy_Context));
EINA_SAFETY_ON_NULL_RETURN_VAL(ctx, ENOMEM);