There may be a case that the callback structure will exist with
no callbacks (following patches). This patch adds check for
specific callbacks before using them.
Signed-off-by: Kristina Hanicova <khanicov(a)redhat.com>
---
src/conf/virdomainjob.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/conf/virdomainjob.c b/src/conf/virdomainjob.c
index 80c92f7939..0e246cbb93 100644
--- a/src/conf/virdomainjob.c
+++ b/src/conf/virdomainjob.c
@@ -138,7 +138,7 @@ virDomainObjInitJob(virDomainJobObj *job,
return -1;
}
- if (job->cb &&
+ if (job->cb && job->cb->allocJobPrivate &&
!(job->privateData = job->cb->allocJobPrivate())) {
virCondDestroy(&job->cond);
virCondDestroy(&job->asyncCond);
@@ -180,7 +180,7 @@ virDomainObjResetAsyncJob(virDomainJobObj *job)
g_clear_pointer(&job->current, virDomainJobDataFree);
job->apiFlags = 0;
- if (job->cb)
+ if (job->cb && job->cb->resetJobPrivate)
job->cb->resetJobPrivate(job->privateData);
}
@@ -206,7 +206,7 @@ virDomainObjPreserveJob(virDomainJobObj *currJob,
job->privateData = g_steal_pointer(&currJob->privateData);
job->apiFlags = currJob->apiFlags;
- if (currJob->cb &&
+ if (currJob->cb && currJob->cb->allocJobPrivate &&
!(currJob->privateData = currJob->cb->allocJobPrivate()))
return -1;
job->cb = currJob->cb;
@@ -226,7 +226,7 @@ virDomainObjClearJob(virDomainJobObj *job)
virCondDestroy(&job->cond);
virCondDestroy(&job->asyncCond);
- if (job->cb)
+ if (job->cb && job->cb->freeJobPrivate)
g_clear_pointer(&job->privateData, job->cb->freeJobPrivate);
}
--
2.37.1