Jacek Caban (@jacek) commented about dlls/mshtml/dispex.c:
continue; hres = builtin_propget(dispex, func, &dp, &var, NULL, NULL); if(SUCCEEDED(hres)) {
hres = IWineJSDispatch_DefineProperty(json, func->name, PROPF_WRITABLE | PROPF_ENUMERABLE | PROPF_CONFIGURABLE, &var);
if(V_VT(&var) == VT_DISPATCH &&
SUCCEEDED(IDispatch_QueryInterface(V_DISPATCH(&var), &IID_IWineJSDispatchHost, (void**)&subdispex_iface))) {
if(subdispex_iface->lpVtbl == &JSDispatchHostVtbl) {
DispatchEx *subdispex = impl_from_IWineJSDispatchHost(subdispex_iface);
if(SUCCEEDED(get_builtin_id(subdispex->info, L"toJSON", fdexNameCaseSensitive, &id))) {
VariantClear(&var);
hres = dispex_call_builtin(subdispex, id, &dp, &var, NULL, NULL);
}
}
IWineJSDispatchHost_Release(subdispex_iface);
}
Do we need that? Usually, it's `stringify`'s responsibility to call `toJSON` on each object property.