[CoreFoundation] Fix collected delegate in CFStream. (#10831)

Fixes this fatal error at runtime:

> A callback was made on a garbage collected delegate of type 'Xamarin.Mac!CoreFoundation.CFStream+CFStreamCallback::Invoke'.
This commit is contained in:
Rolf Bjarne Kvinge 2021-03-11 16:02:09 +01:00 коммит произвёл GitHub
Родитель 3af399e21f
Коммит fee2ecf943
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
1 изменённых файлов: 3 добавлений и 1 удалений

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

@ -453,6 +453,8 @@ namespace CoreFoundation {
stream.OnCallback ((CFStreamEventType) (long) type);
}
static CFStreamCallback OnCallbackDelegate = OnCallback;
protected virtual void OnCallback (CFStreamEventType type)
{
var args = new StreamEventArgs (type);
@ -495,7 +497,7 @@ namespace CoreFoundation {
var ptr = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (CFStreamClientContext)));
try {
Marshal.StructureToPtr (ctx, ptr, false);
if (!DoSetClient (OnCallback, (nint) (long) args, ptr))
if (!DoSetClient (OnCallbackDelegate, (nint) (long) args, ptr))
throw new InvalidOperationException ("Stream does not support async events.");
} finally {
Marshal.FreeHGlobal (ptr);