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.