Jacek Caban (@jacek) commented about dlls/jscript/enumerator.c:
+ IEnumVARIANT_Release(This->enumvar); jsval_release(This->item); free(dispex); }
static HRESULT Enumerator_gc_traverse(struct gc_ctx *gc_ctx, enum gc_traverse_op op, jsdisp_t *dispex) { + EnumeratorInstance *This = enumerator_from_jsdisp(dispex); + + if(op == GC_TRAVERSE_UNLINK) { + IEnumVARIANT *enumvar = This->enumvar; + if(enumvar) { + This->enumvar = NULL; + IEnumVARIANT_Release(enumvar); + } + } This is an external reference that does not participate in GC traversal, so there is no point unlinking it here. Releasing it in the destructor should be enough.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/4285#note_50825