diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 7670e47359..3c0bb04cab 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -13120,11 +13120,14 @@ virDomainAudioCommonParse(virDomainAudioIOCommon *def,
             return -1;
         }
 
-        if (format &&
-            (def->format = virDomainAudioFormatTypeFromString(format)) <= 0) {
-            virReportError(VIR_ERR_XML_ERROR,
-                           _("cannot parse 'format' value '%s'"), format);
-            return -1;
+        if (format) {
+            int value;
+            if ((value = virDomainAudioFormatTypeFromString(format)) <= 0) {
+                virReportError(VIR_ERR_XML_ERROR,
+                               _("cannot parse 'format' value '%s'"), format);
+                return -1;
+            }
+            def->format = value;
         }
     }
 
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 95d0516279..be8f43a35c 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -1502,7 +1502,7 @@ struct _virDomainAudioIOCommon {
     unsigned int frequency;
     unsigned int channels;
     unsigned int voices;
-    int format; /* virDomainAudioFormat */
+    virDomainAudioFormat format;
     unsigned int bufferLength; /* milliseconds */
 };