]> xenbits.xensource.com Git - libvirt.git/commitdiff
virthreadpool: Copy job name
authorJiri Denemark <jdenemar@redhat.com>
Fri, 26 Nov 2021 15:22:43 +0000 (16:22 +0100)
committerJiri Denemark <jdenemar@redhat.com>
Wed, 1 Dec 2021 13:36:29 +0000 (14:36 +0100)
Currently virThreadPoolNewFull relies on the caller to ensure the job
name outlives the thread pool. Which basically enforces static strings.
Let's drop this implicit requirement by making a copy of the job name.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/util/virthreadpool.c

index 7bf433388537b53f994450d1721a511439759d1d..426840e43515832757286940bc7784032cc6c88b 100644 (file)
@@ -50,7 +50,7 @@ struct _virThreadPool {
     bool quit;
 
     virThreadPoolJobFunc jobFunc;
-    const char *jobName;
+    char *jobName;
     void *jobOpaque;
     virThreadPoolJobList jobList;
     size_t jobQueueDepth;
@@ -237,7 +237,7 @@ virThreadPoolNewFull(size_t minWorkers,
     pool->jobList.tail = pool->jobList.head = NULL;
 
     pool->jobFunc = func;
-    pool->jobName = name;
+    pool->jobName = g_strdup(name);
     pool->jobOpaque = opaque;
 
     if (identity)
@@ -312,6 +312,7 @@ void virThreadPoolFree(virThreadPool *pool)
     if (pool->identity)
         g_object_unref(pool->identity);
 
+    g_free(pool->jobName);
     g_free(pool->workers);
     virMutexUnlock(&pool->mutex);
     virMutexDestroy(&pool->mutex);