Skip to content

Commit bdee9a3

Browse files
Fixed initialization of a class which has last fields in a table with 65535 field entries and the next class having no fields
(cherry picked from commit 0888d04)
1 parent 2466afe commit bdee9a3

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

mono/metadata/class-init.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -634,8 +634,9 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token, MonoError
634634

635635
if (tt->rows > tidx){
636636
mono_metadata_decode_row (tt, tidx, cols_next, MONO_TYPEDEF_SIZE);
637-
field_last = cols_next [MONO_TYPEDEF_FIELD_LIST] - 1;
638-
method_last = cols_next [MONO_TYPEDEF_METHOD_LIST] - 1;
637+
// check if the next row has fields at all, if not, then continue run till the end of the table
638+
field_last = cols_next [MONO_TYPEDEF_FIELD_LIST] ? cols_next [MONO_TYPEDEF_FIELD_LIST] - 1 : image->tables [MONO_TABLE_FIELD].rows;
639+
method_last = cols_next [MONO_TYPEDEF_METHOD_LIST] ? cols_next [MONO_TYPEDEF_METHOD_LIST] - 1 : image->tables [MONO_TABLE_METHOD].rows;
639640
} else {
640641
field_last = image->tables [MONO_TABLE_FIELD].rows;
641642
method_last = image->tables [MONO_TABLE_METHOD].rows;

0 commit comments

Comments
 (0)