virCapsPtr caps,
unsigned int parseFlags,
void *opaque,
- void *parseOpaque ATTRIBUTE_UNUSED)
+ void *parseOpaque)
{
virQEMUDriverPtr driver = opaque;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
- virQEMUCapsPtr qemuCaps = NULL;
+ virQEMUCapsPtr qemuCaps = parseOpaque;
int ret = -1;
if (def->os.bootloader || def->os.bootloaderArgs) {
!(def->emulator = virDomainDefGetDefaultEmulator(def, caps)))
goto cleanup;
- if (!(qemuCaps = virQEMUCapsCacheLookup(caps,
- driver->qemuCapsCache,
- def->emulator)))
- goto cleanup;
+ if (qemuCaps) {
+ virObjectRef(qemuCaps);
+ } else {
+ if (!(qemuCaps = virQEMUCapsCacheLookup(caps,
+ driver->qemuCapsCache,
+ def->emulator)))
+ goto cleanup;
+ }
if (qemuDomainDefAddDefaultDevices(def, qemuCaps) < 0)
goto cleanup;
}
if (xmlin) {
- if (!(def = virDomainDefParseString(xmlin, caps, driver->xmlopt, NULL,
+ if (!(def = virDomainDefParseString(xmlin, caps, driver->xmlopt, priv->qemuCaps,
VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE)))
goto cleanup;