From 35e3f39bf967c4ed2ba3390b488604554306065d Mon Sep 17 00:00:00 2001 From: Xavier Leroy Date: Mon, 9 Nov 2015 17:03:47 +0100 Subject: Handle large static initializers for global arrays Use tail-recursive operations to implement transformations on initializers for global arrays. This way, very large static initializers no longer cause stack overflows at compile-time. --- cparser/PackedStructs.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cparser/PackedStructs.ml') diff --git a/cparser/PackedStructs.ml b/cparser/PackedStructs.ml index c163989e..6ea5d121 100644 --- a/cparser/PackedStructs.ml +++ b/cparser/PackedStructs.ml @@ -360,7 +360,7 @@ let transf_init loc env i = match unroll env ty with | TArray(ty_elt, _, _) -> Some ty_elt | _ -> assert false in - Init_array (List.map (trinit swap_elt) il) + Init_array (List.rev (List.rev_map (trinit swap_elt) il)) | Init_struct(id, fld_init_list) -> let trinit_field (f, i) = let swap_f = -- cgit