diff --git a/src/kernel_internals/typing/cabs2cil.ml b/src/kernel_internals/typing/cabs2cil.ml
index 4ad7be278ca025c73500ba4d94526d29584247e8..6c13294a50014fce127e1d7d6391c49c7da5a924 100644
--- a/src/kernel_internals/typing/cabs2cil.ml
+++ b/src/kernel_internals/typing/cabs2cil.ml
@@ -3193,14 +3193,14 @@ let rec collectInitializer
         Cil_datatype.Typ.pretty thistype !pMaxIdx;
       (* Find the field to initialize *)
       let rec findField (idx: int) = function
-        | [] -> Kernel.fatal ~current:true "collectInitializer: union"
+        | [] -> [], reads
         | _ :: rest when idx < !pMaxIdx && !pArray.(idx) = NoInitPre ->
           findField (idx + 1) rest
         | f :: _ when idx = !pMaxIdx ->
           let init, reads =
             collectFieldInitializer reads !pArray.(idx) f ~parenttype:thistype
           in
-          (Field(f, NoOffset), init), reads
+          [ (Field(f, NoOffset), init) ], reads
 
         | _ ->
           abort_context "Can initialize only one field for union"
@@ -3209,7 +3209,7 @@ let rec collectInitializer
         Kernel.warning ~current:true
           "On MSVC we can initialize only the first field of a union";
       let init, reads = findField 0 (Option.value ~default:[] comp.cfields) in
-      CompoundInit (thistype, [ init ]), thistype, reads
+      CompoundInit (thistype, init), thistype, reads
 
     | _ -> Kernel.fatal ~current:true "collectInitializer"