Jacek Caban (@jacek) commented about dlls/mshtml/htmlelem.c:
+ case VT_EMPTY: + case VT_BSTR: + case VT_NULL: + return S_FALSE; + default: + break; + } + + hres = change_type(&args[1], &dp->rgvarg[dp->cArgs - 1], VT_BSTR, caller); + if(FAILED(hres)) + return hres; + args[0] = dp->rgvarg[dp->cArgs - 2]; + + hres = dispex_call_builtin(dispex, DISPID_IHTMLELEMENT6_GETATTRIBUTENS, &new_dp, res, ei, caller); + VariantClear(&args[1]); + return hres; We already have similar cases, so it's probably not a blocker, but I think that we eventually need to find a way to just use change_type() in the implementation itself. That would make all those hooks unneeded.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/538#note_5073