Jacek Caban (@jacek) commented about dlls/mshtml/htmlattr.c:
BSTR name; nsresult nsres; HRESULT hres;
cpp_bool b;
TRACE("(%p)->(%p)\n", This, p);
if(This->node.nsnode) {
nsres = nsIDOMAttr_GetSpecified((nsIDOMAttr*)This->node.nsnode, &b);
Please avoid casts like this. The usual approach for similar node types is to store a member like `nsIDOMAttr *dom_attr` in `HTMLDOMAttribute`.
This change would also use better patch splitting. For instance, you could first introduce the `dom_attr` member and incrementally use it in places like this. Once those are updated, you could convert the object into a fully-fledged MSHTML node.
Also, those changes are not currently covered by tests. We could probably run `test_attr` from `dom.c` in IE11 or IE9 mode.