virDomainSnapshotPtr virGetDomainSnapshot(virDomainPtr domain, const char *name) { virDomainSnapshotPtr ret = NULL; if (virDataTypesInitialize() < 0) return NULL; if (!VIR_IS_DOMAIN(domain)) { virLibConnError(VIR_ERR_INVALID_DOMAIN, "%s", _("bad domain")); return NULL; } virCheckNonNullArgReturn(name, NULL); if (!(ret = virObjectNew(virDomainSnapshotClass))) return NULL; if (VIR_STRDUP(ret->name, name) < 0) goto cleanup; ret->domain = virObjectRef(domain); return ret; cleanup: virObjectUnref(ret); return NULL; }
virDomainSnapshotPtr virGetDomainSnapshot(virDomainPtr domain, const char *name) { virDomainSnapshotPtr ret = NULL; if (!VIR_IS_DOMAIN(domain)) { virLibConnError(VIR_ERR_INVALID_ARG, _("bad domain")); return NULL; } if (name == NULL) { virLibConnError(VIR_ERR_INVALID_ARG, _("missing name")); return NULL; } virMutexLock(&domain->conn->lock); if (VIR_ALLOC(ret) < 0) { virMutexUnlock(&domain->conn->lock); virReportOOMError(); goto error; } ret->name = strdup(name); if (ret->name == NULL) { virMutexUnlock(&domain->conn->lock); virReportOOMError(); goto error; } ret->magic = VIR_SNAPSHOT_MAGIC; ret->domain = domain; domain->refs++; ret->refs++; virMutexUnlock(&domain->conn->lock); return(ret); error: if (ret != NULL) { VIR_FREE(ret->name); VIR_FREE(ret); } return(NULL); }