[registrar] Return values from mono_value_box must be released. (#11708)

Before:

    There were 258046 MonoObjects created, 235142 MonoObjects freed, so 22904 were not freed. (dynamic registrar)
    There were 205804 MonoObjects created, 204193 MonoObjects freed, so 1611 were not freed. (static registrar)

After:

    There were 258054 MonoObjects created, 235172 MonoObjects freed, so 22882 were not freed. (dynamic registrar)
    There were 205804 MonoObjects created, 204193 MonoObjects freed, so 1611 were not freed. (static registrar)
This commit is contained in:
Rolf Bjarne Kvinge 2021-05-27 16:43:11 +02:00 коммит произвёл GitHub
Родитель c5bb80193b
Коммит 57288a5ad4
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
1 изменённых файлов: 5 добавлений и 1 удалений

Просмотреть файл

@ -1009,8 +1009,12 @@ xamarin_generate_conversion_to_managed (id value, MonoType *inputType, MonoType
goto exception_handling;
*(SList **) free_list = s_list_prepend (*(SList **) free_list, convertedValue);
if (isManagedNullable)
if (isManagedNullable) {
convertedValue = mono_value_box (mono_domain_get (), underlyingManagedType, convertedValue);
SList* release_list = *(SList**) release_list_ptr;
if (release_list != NULL)
*release_list_ptr = s_list_prepend (release_list, convertedValue);
}
}
}