Remove Assert in Method.MakeGeneric on Invalid Args #2153
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The call to
mono_class_inflate_generic_method_checked
will set error when there are invalid types (e.g.typeof(void)/typeof(int*))
passed in. This should not be an assert, we should all to the "Invalid generic arguments" message below. This does loose the error returned bymono_class_inflate_generic_method_checked
but that error isn't userfriendly. It would report be something like:
We can just report the more readable error to the user.
Note I also had to remove the
"typeArguments"
message from the error. When this error is freed Mono will attempt to deallocate that value, but since it's not a allocated value our allocator will crash (In Unity we replace Mono's allocators with our own).Upstream issue: dotnet/runtime#71339
Upstream PR: dotnet/runtime#116788
Reviewers: please consider these questions as well! ❤️
Release notes
Fixed UUM-109251 @scott-ferguson-unity:
Mono: Prevent crash when Method.MakeGenericMethod is called with invalid generic argument types