Jacek Caban (@jacek) commented about dlls/mshtml/dispex.c:
HRESULT hres;
- TRACE("%s (%p)->(%lx %x %lx %p %p %p %p)\n", This->info->name, This, id, iid, flags, dp, ret, ei, caller); + TRACE("%s (%p)->(%lx %d %lx %p %p %p %p)\n", This->info->name, This, id, iid, flags, dp, ret, ei, caller);
hres = get_builtin_func(This->info, id, &func); - if(FAILED(hres) || func->tid != iid) + if(FAILED(hres)) return E_UNEXPECTED;
+ if(iid <= 0) { + if(func->tid != -iid) + return E_UNEXPECTED; + }else if(iid != func->prototype_id) { + return E_UNEXPECTED; + }
We still have builtin properties that are not in prototypes in builtin MSHTML constructors. AFAIR, we shouldn't expose most of them in IE9+ mode, but some of them should remain. This would probably break them, please add a test. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/7779#note_100729