Use of enum types for struct fields is generally avoided since it causes
warnings if the compiler assumes the enum is unsigned. For example
commit
8e2982b5767a25e5da6533c65bfdc648c95b3c69
Author: Cole Robinson <crobinso@redhat.com>
Date: Tue Jul 24 16:27:54 2018 -0400
conf: Clean up virDomainDefParseCaps
Introduced a line:
if ((def->virtType = virDomainVirtTypeFromString(virttype)) < 0) {
which causes a build failure with CLang
conf/domain_conf.c:19143:65: error: comparison of unsigned enum expression < 0 is always false [-Werror,-Wtautological-compare]
as the compiler is free to optimize away the "< 0" check due to the
assumption that the enum type is unsigned and always in range.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
int
virDomainVideoDefaultType(const virDomainDef *def)
{
- switch (def->virtType) {
+ switch ((virDomainVirtType)def->virtType) {
case VIR_DOMAIN_VIRT_TEST:
case VIR_DOMAIN_VIRT_XEN:
if (def->os.type == VIR_DOMAIN_OSTYPE_XEN ||
typedef struct _virDomainDef virDomainDef;
typedef virDomainDef *virDomainDefPtr;
struct _virDomainDef {
- virDomainVirtType virtType;
+ int virtType; /* enum virDomainVirtType */
int id;
unsigned char uuid[VIR_UUID_BUFLEN];
virCommandAddArg(cmd, "-machine");
virBufferAdd(&buf, def->os.machine, -1);
- switch (def->virtType) {
+ switch ((virDomainVirtType)def->virtType) {
case VIR_DOMAIN_VIRT_QEMU:
virBufferAddLit(&buf, ",accel=tcg");
break;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
virCapsPtr caps = NULL;
bool active = false;
+ virDomainVirtType virtType;
VIR_DEBUG("Beginning VM attach process");
goto exit_monitor;
if (qemuMonitorGetStatus(priv->mon, &running, &reason) < 0)
goto exit_monitor;
- if (qemuMonitorGetVirtType(priv->mon, &vm->def->virtType) < 0)
+ if (qemuMonitorGetVirtType(priv->mon, &virtType) < 0)
goto exit_monitor;
+ vm->def->virtType = virtType;
if (qemuDomainObjExitMonitor(driver, vm) < 0)
goto error;