diff --git a/src/thread.c b/src/thread.c index ff1e7c8..27815f7 100644 --- a/src/thread.c +++ b/src/thread.c @@ -52,7 +52,6 @@ void *routine(void *p_data) pthread_mutex_lock(&g_nb_threads_mtx); g_nb_threads--; pthread_mutex_unlock(&g_nb_threads_mtx); - free(p_data); return NULL; } @@ -105,6 +104,7 @@ int create_threads(const struct option_lst *options, char *ip_addr, thread_data->port_end = port_end; g_start = true; routine(thread_data); + free(thread_data); return 0; } @@ -139,6 +139,7 @@ int create_threads(const struct option_lst *options, char *ip_addr, dprintf(2, "ft_nmap: error during pthread_create()\n"); return -1; } + pthread_detach(threads[i]); } pthread_mutex_lock(&g_start_mtx); g_start = true; @@ -152,6 +153,8 @@ int create_threads(const struct option_lst *options, char *ip_addr, break; usleep(100); } + free(threads_data); + free(threads); return 0; }