On Fri, Oct 14, 2016 at 10:19:58AM -0400, John Ferlan wrote:
[...]+char * +qemuBuildShmemDevStr(virDomainDefPtr def, + virDomainShmemDefPtr shmem, + virQEMUCapsPtr qemuCaps) +{ + virBuffer buf = VIR_BUFFER_INITIALIZER; + + virBufferAsprintf(&buf, "%s", virDomainShmemModelTypeToString(shmem->model)); + virBufferAsprintf(&buf, ",id=%s", shmem->info.alias); + + if (shmem->server.enabled) + virBufferAsprintf(&buf, ",chardev=char%s", shmem->info.alias); + else + virBufferAsprintf(&buf, ",memdev=shmmem-%s", shmem->info.alias); + + if (shmem->msi.vectors) + virBufferAsprintf(&buf, ",vectors=%u", shmem->msi.vectors); + if (shmem->msi.ioeventfd) { + virBufferAsprintf(&buf, ",ioeventfd=%s", + virTristateSwitchTypeToString(shmem->msi.ioeventfd)); + } + + if (qemuBuildDeviceAddressStr(&buf, def, &shmem->info, qemuCaps) < 0) { + virBufferFreeAndReset(&buf); + return NULL; + } + + if (virBufferCheckError(&buf) < 0)Still would need to FreeAndReset - I'd be OK if it were an || to the previous if, although I know that causes agita for others.Well, not really. The content gets free()'d whenever the buf->error is set, so it is already cleared if there was an error.That's not how I read/see other callers of virBufferCheckError and I see no free in virBufferCheckErrorInternal
It's free()'d when it is *set*, see virBufferSetError (the only place in virbuffer.c that sets the ->error member).
John [...]
Attachment:
signature.asc
Description: Digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list