Jinoh Kang (@iamahuman) commented about dlls/ntdll/unix/virtual.c:
kret = p_thread_get_register_pointer_values( threads[i], &sp, ®_count, reg_values );/* This function always fails when querying Rosetta's exception handling thread, so we only treatKERN_INSUFFICIENT_BUFFER_SIZE as an error, like .NET core does. */if (kret == KERN_INSUFFICIENT_BUFFER_SIZE)goto fail;/* Deallocate thread reference once we're done with it */kret = mach_port_deallocate( mach_task_self(), threads[i++] );if (kret)goto fail;- }
- success = TRUE;
+fail:
- /* Deallocate remaining thread references */
- while (i < count)
mach_port_deallocate( mach_task_self(), threads[i++] );
(to continue from above, note that we don't check for the error here; we don't need it anyway.)