asyn-thread: Improved cleanup after OOM situations

This commit is contained in:
Dan Fandrich 2017-08-28 23:43:36 +02:00
parent 11a8778e0b
commit d5d736726c
1 changed files with 7 additions and 3 deletions

View File

@ -384,7 +384,7 @@ static bool init_resolve_thread(struct connectdata *conn,
conn->async.os_specific = (void *)td;
if(!td)
goto err_exit;
goto errno_exit;
conn->async.port = port;
conn->async.done = FALSE;
@ -392,8 +392,11 @@ static bool init_resolve_thread(struct connectdata *conn,
conn->async.dns = NULL;
td->thread_hnd = curl_thread_t_null;
if(!init_thread_sync_data(td, hostname, port, hints))
goto err_exit;
if(!init_thread_sync_data(td, hostname, port, hints)) {
conn->async.os_specific = NULL;
free(td);
goto errno_exit;
}
free(conn->async.hostname);
conn->async.hostname = strdup(hostname);
@ -416,6 +419,7 @@ static bool init_resolve_thread(struct connectdata *conn,
err_exit:
destroy_async_data(&conn->async);
errno_exit:
errno = err;
return FALSE;
}