mshtml: Add IHTMLXMLHttpRequest::responseXML() method implementation. (try 2)

Nikolay Sivov bunglehead at gmail.com
Wed Nov 4 09:31:39 CST 2015


On 04.11.2015 18:11, Zhenbo Li wrote:
> Hi Nikolay,
>
> 2015-11-04 22:44 GMT+08:00 Nikolay Sivov <bunglehead at gmail.com>:
>> I don't know if it's terribly important in practice or not, but it could be
>> better to always initialize out pointer to NULL.
>>
> So how about adding such code at the beginning of this function
>
>      if(!p)
>          return E_POINTER;
>      *p = NULL;

Sure, if test proves that it handles NULL arguments.

>
>
>>> +    hres = IXMLDOMDocument_QueryInterface(xmldoc, &IID_IObjectSafety,
>>> (void**)&safety);
>>> +    if(SUCCEEDED(hres)) {
>>> +        hres = IObjectSafety_SetInterfaceSafetyOptions(safety, NULL,
>>> +            INTERFACESAFE_FOR_UNTRUSTED_CALLER |
>>> INTERFACESAFE_FOR_UNTRUSTED_DATA | INTERFACE_USES_SECURITY_MANAGER,
>>> +            INTERFACESAFE_FOR_UNTRUSTED_CALLER |
>>> INTERFACESAFE_FOR_UNTRUSTED_DATA | INTERFACE_USES_SECURITY_MANAGER);
>>> +        IObjectSafety_Release(safety);
>>> +        if(FAILED(hres)) {
>>> +            ERR("SetInterfaceSafetyOptions(%p) failed: %08x\n", safety,
>>> hres);
>>> +            IXMLDOMDocument_Release(xmldoc);
>>> +            return hres;
>>> +        }
>>> +    } else {
>>> +        ERR("QueryInterface(IID_IObjectSafety) failed: %08x\n", hres);
>>> +        IXMLDOMDocument_Release(xmldoc);
>>> +        return hres;
>>> +    }
>>
>>
>> This looks too complicated to me, I don't think any failure here is
>> critical.
>
> The code is too complicated to me, either. But I haven't find a better
> solution for that.
>
>

If I was doing it, I'd simply QI for IObjectSafety, if SUCCEEDED() -> 
SetInterfaceSafetyOptions(), and Release(), no additional error 
checking. Jacek, what do you think?



More information about the wine-devel mailing list