Skip to content

Commit

Permalink
Avoid throwing TypeLoadException for generic 2D arrays (case UUM-34854)
Browse files Browse the repository at this point in the history
Mono was a bit too aggressive with its TypeLoadException processing, not
allowing some valid code in this case. This change applies the fix from:

dotnet/runtime#85828
  • Loading branch information
Josh Peterson committed May 22, 2023
1 parent 61e5a3d commit f8294de
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions mono/metadata/class-init.c
Original file line number Diff line number Diff line change
Expand Up @@ -1124,8 +1124,10 @@ mono_class_create_bounded_array (MonoClass *eclass, guint32 rank, gboolean bound

mono_class_setup_supertypes (klass);

if (mono_class_is_ginst (eclass))
mono_class_init_internal (eclass);
// NOTE: this is probably too aggressive if eclass is not a valuetype. It looks like we
// only need the size info in order to set MonoClass:has_references for this array type -
// and for that we only need to setup the fields of the element type if it's not a reference
// type.
if (!eclass->size_inited)
mono_class_setup_fields (eclass);
mono_class_set_type_load_failure_causedby_class (klass, eclass, "Could not load array element type");
Expand Down

0 comments on commit f8294de

Please sign in to comment.