--- src/util/threads-pthread.c | 13 +++++++++++-- 1 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/util/threads-pthread.c b/src/util/threads-pthread.c index 02070ae..54a3808 100644 --- a/src/util/threads-pthread.c +++ b/src/util/threads-pthread.c @@ -26,6 +26,7 @@ # include <sys/syscall.h> #endif +#include "memory.h" /* Nothing special required for pthreads */ int virThreadInitialize(void) @@ -143,6 +144,7 @@ static void *virThreadHelper(void *data) { struct virThreadArgs *args = data; args->func(args->opaque); + VIR_FREE(args); return NULL; } @@ -151,13 +153,20 @@ int virThreadCreate(virThreadPtr thread, virThreadFunc func, void *opaque) { - struct virThreadArgs args = { func, opaque }; + struct virThreadArgs *args; pthread_attr_t attr; + + if (VIR_ALLOC(args) < 0) + return -1; + + args->func = func; + args->opaque = opaque; + pthread_attr_init(&attr); if (!joinable) pthread_attr_setdetachstate(&attr, 1); - int ret = pthread_create(&thread->thread, &attr, virThreadHelper, &args); + int ret = pthread_create(&thread->thread, &attr, virThreadHelper, args); if (ret != 0) { errno = ret; return -1; -- 1.7.3 -- Thanks, Hu Tao -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list