Brendan Shanks (@bshanks) commented about dlls/winemac.drv/cocoa_display.m:
+ return len; + + result = IOServiceGetMatchingServices(0, IOServiceMatching("DCPAVServiceProxy"), &iterator); + if (result != KERN_SUCCESS) + return len; + + while((service = IOIteratorNext(iterator))) + { + uint32_t vendor_number, model_number, serial_number; + const unsigned char *edid_ptr; + IOAVServiceRef avservice; + CFDataRef edid = NULL; + IOReturn edid_result; + + avservice = pIOAVServiceCreateWithService(kCFAllocatorDefault, service); + if (!avservice) You should be able to call `IOObjectRelease(service)` right after `IOAVServiceCreateWithService` (regardless of whether IOAVServiceCreateWithService succeeds or not), then you avoid having to call `IOObjectRelease(service)` later in the function.
Same with `avservice` also. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8925#note_117487