From: Gabriel Ivăncescu gabrielopcode@gmail.com
--- dlls/mshtml/htmlwindow.c | 14 ++++++-------- dlls/mshtml/mshtml_private.h | 1 - dlls/mshtml/xmlhttprequest.c | 29 ++++++++++++++--------------- 3 files changed, 20 insertions(+), 24 deletions(-)
diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c index 90d42a00506..c8c0c7c1ea6 100644 --- a/dlls/mshtml/htmlwindow.c +++ b/dlls/mshtml/htmlwindow.c @@ -1902,6 +1902,8 @@ static HRESULT WINAPI HTMLWindow5_get_XMLHttpRequest(IHTMLWindow5 *iface, VARIAN { HTMLWindow *This = impl_from_IHTMLWindow5(iface); HTMLInnerWindow *window = This->inner_window; + DispatchEx *constr; + HRESULT hres;
TRACE("(%p)->(%p)\n", This, p);
@@ -1910,16 +1912,12 @@ static HRESULT WINAPI HTMLWindow5_get_XMLHttpRequest(IHTMLWindow5 *iface, VARIAN return S_OK; }
- if(!window->constructors[OBJID_XMLHttpRequest]) { - HRESULT hres; - - hres = HTMLXMLHttpRequestFactory_Create(window, &window->constructors[OBJID_XMLHttpRequest]); - if(FAILED(hres)) - return hres; - } + hres = get_constructor(window, OBJID_XMLHttpRequest, &constr); + if(FAILED(hres)) + return hres;
V_VT(p) = VT_DISPATCH; - V_DISPATCH(p) = (IDispatch*)&window->constructors[OBJID_XMLHttpRequest]->IWineJSDispatchHost_iface; + V_DISPATCH(p) = (IDispatch*)&constr->IWineJSDispatchHost_iface; IDispatch_AddRef(V_DISPATCH(p));
return S_OK; diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 4741249cbc1..cf8c2a5162b 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -1169,7 +1169,6 @@ HRESULT create_outer_window(GeckoBrowser*,mozIDOMWindowProxy*,HTMLOuterWindow*,H HRESULT update_window_doc(HTMLInnerWindow*); HTMLOuterWindow *mozwindow_to_window(const mozIDOMWindowProxy*); void get_top_window(HTMLOuterWindow*,HTMLOuterWindow**); -HRESULT HTMLXMLHttpRequestFactory_Create(HTMLInnerWindow*,DispatchEx**); HRESULT create_location(HTMLOuterWindow*,HTMLLocation**); HRESULT create_navigator(HTMLInnerWindow*,IOmNavigator**); HRESULT create_html_screen(HTMLInnerWindow*,IHTMLScreen**); diff --git a/dlls/mshtml/xmlhttprequest.c b/dlls/mshtml/xmlhttprequest.c index 371d4f65a93..109ef990f67 100644 --- a/dlls/mshtml/xmlhttprequest.c +++ b/dlls/mshtml/xmlhttprequest.c @@ -1489,20 +1489,6 @@ static const event_target_vtbl_t HTMLXMLHttpRequest_event_target_vtbl = { .bind_event = HTMLXMLHttpRequest_bind_event };
-static const tid_t HTMLXMLHttpRequest_iface_tids[] = { - IHTMLXMLHttpRequest2_tid, - 0 -}; -dispex_static_data_t XMLHttpRequest_dispex = { - .id = OBJID_XMLHttpRequest, - .init_constructor = HTMLXMLHttpRequestFactory_Create, - .vtbl = &HTMLXMLHttpRequest_event_target_vtbl.dispex_vtbl, - .disp_tid = DispHTMLXMLHttpRequest_tid, - .iface_tids = HTMLXMLHttpRequest_iface_tids, - .init_info = HTMLXMLHttpRequest_init_dispex_info, -}; - - /* IHTMLXMLHttpRequestFactory */ static inline HTMLXMLHttpRequestFactory *impl_from_IHTMLXMLHttpRequestFactory(IHTMLXMLHttpRequestFactory *iface) { @@ -1674,7 +1660,7 @@ static dispex_static_data_t HTMLXMLHttpRequestFactory_dispex = { .iface_tids = HTMLXMLHttpRequestFactory_iface_tids, };
-HRESULT HTMLXMLHttpRequestFactory_Create(HTMLInnerWindow* window, DispatchEx **ret_ptr) +static HRESULT HTMLXMLHttpRequestFactory_Create(HTMLInnerWindow *window, DispatchEx **ret_ptr) { HTMLXMLHttpRequestFactory *ret;
@@ -1692,3 +1678,16 @@ HRESULT HTMLXMLHttpRequestFactory_Create(HTMLInnerWindow* window, DispatchEx **r *ret_ptr = &ret->dispex; return S_OK; } + +static const tid_t HTMLXMLHttpRequest_iface_tids[] = { + IHTMLXMLHttpRequest2_tid, + 0 +}; +dispex_static_data_t XMLHttpRequest_dispex = { + .id = OBJID_XMLHttpRequest, + .init_constructor = HTMLXMLHttpRequestFactory_Create, + .vtbl = &HTMLXMLHttpRequest_event_target_vtbl.dispex_vtbl, + .disp_tid = DispHTMLXMLHttpRequest_tid, + .iface_tids = HTMLXMLHttpRequest_iface_tids, + .init_info = HTMLXMLHttpRequest_init_dispex_info, +};