Jacek Caban (@jacek) commented about dlls/jscript/enumerator.c:
jsval_release(This->item); free(dispex);IEnumVARIANT_Release(This->enumvar);}
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.