diff --git a/src/lib/ecore_con/ecore_con_url_curl.c b/src/lib/ecore_con/ecore_con_url_curl.c index 4b325a15cf..e0d5f93c6b 100644 --- a/src/lib/ecore_con/ecore_con_url_curl.c +++ b/src/lib/ecore_con/ecore_con_url_curl.c @@ -244,7 +244,11 @@ _c_init(void) { long ms = 0; - if (_c) return EINA_TRUE; + if (_c) + { + _c->ref++; + return EINA_TRUE; + } if (_c_fail) { ERR("Cannot find libcurl at runtime!"); @@ -252,6 +256,7 @@ _c_init(void) } _c = calloc(1, sizeof(Ecore_Con_Curl)); if (!_c) goto error; + _c->ref++; #define LOAD(x) \ if (!_c->mod) { \ @@ -342,7 +347,7 @@ error: void _c_shutdown(void) { - if (!_c) return; + if (!_c || _c->ref--) return; if (_c->_curlm) { _c->curl_multi_cleanup(_c->_curlm); diff --git a/src/lib/ecore_con/ecore_con_url_curl.h b/src/lib/ecore_con/ecore_con_url_curl.h index 42eae54c05..ae79c4c5cb 100644 --- a/src/lib/ecore_con/ecore_con_url_curl.h +++ b/src/lib/ecore_con/ecore_con_url_curl.h @@ -451,6 +451,8 @@ struct _Ecore_Con_Curl const char *string); time_t (*curl_getdate)(const char *p, const time_t *unused); curl_version_info_data *(*curl_version_info)(CURLversion); + + int ref; /* Reference on the structure */ }; #define CURL_MIN_TIMEOUT 100