On Thu, Jan 13, 2022 at 03:11:51PM +0530, Ani Sinha wrote: > > diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c > > index d822533ccb..4130df0ed9 100644 > > --- a/src/qemu/qemu_command.c > > +++ b/src/qemu/qemu_command.c > > @@ -10718,6 +10718,8 @@ qemuBuildSerialChrDeviceProps(const virDomainDef *def, > > g_autoptr(virJSONValue) props = NULL; > > g_autofree char *chardev = g_strdup_printf("char%s", serial->info.alias); > > virQEMUCapsFlags caps; > > + const char *typestr; > > + int ret; > > type should match the return type of this function. It does match return type of virDomainChrSerialTargetModelTypeToString(): 47 #define VIR_ENUM_DECL(name) \ 48 const char *name ## TypeToString(int type); \ > ret should be defined as virJSONValue. "int" is correct: 358 int 359 virJSONValueObjectAdd(virJSONValue **objptr, ...) > I preferred your previous style to this one. Below is cleaner IMO: we don't repeat code, and the flow is much clearer. > > switch ((virDomainChrSerialTargetModel) serial->targetModel) { > > case VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_ISA_SERIAL: > > @@ -10750,11 +10752,24 @@ qemuBuildSerialChrDeviceProps(const virDomainDef *def, > > return NULL; > > } > > > > - if (virJSONValueObjectAdd(&props, > > - "s:driver", virDomainChrSerialTargetModelTypeToString(serial->targetModel), > > - "s:chardev", chardev, > > - "s:id", serial->info.alias, > > - NULL) < 0) > > + typestr = virDomainChrSerialTargetModelTypeToString(serial->targetModel); > > + > > + if (serial->targetModel == VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_ISA_SERIAL) { > > + ret = virJSONValueObjectAdd(&props, > > + "s:driver", typestr, > > + "s:chardev", chardev, > > + "s:id", serial->info.alias, > > + "k:index", serial->target.port, > > + NULL); > > + } else { > > + ret = virJSONValueObjectAdd(&props, > > + "s:driver", typestr, > > + "s:chardev", chardev, > > + "s:id", serial->info.alias, > > + NULL); > > + } > > + > > + if (ret < 0) > > return NULL; regards john