mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
virdomainjob: add check for callbacks
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@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com> Signed-off-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
2378f9d86e
commit
0c3f023045
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user