From 506a20a1da58b7b6f6a2e1328113a7c677e9fb84 Mon Sep 17 00:00:00 2001 From: Dmitry Kislyuk Date: Mon, 29 Mar 2021 13:21:43 +0200 Subject: [PATCH] mshtml: Fix NULL offset parent handling in IHTMLElement::get_offsetParent. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50875 Signed-off-by: Dmitry Kislyuk Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard (cherry picked from commit 35d0fda0f044497df90d1ef5c1e2e359e8d3166e) Signed-off-by: Michael Stefaniuc --- dlls/mshtml/htmlelem.c | 2 +- dlls/mshtml/tests/dom.c | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index 732db50a78c..584f2e6a9d3 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -1628,7 +1628,7 @@ static HRESULT WINAPI HTMLElement_get_offsetParent(IHTMLElement *iface, IHTMLEle if(!nsparent) { *p = NULL; - hres = S_OK; + return S_OK; } hres = get_element(nsparent, &parent); diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index 94923d83add..e46fc54bb70 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -1298,11 +1298,14 @@ static void _test_elem_offset(unsigned line, IUnknown *unk, const WCHAR *parent_ hres = IHTMLElement_get_offsetParent(elem, &off_parent); ok_(__FILE__,line) (hres == S_OK, "get_offsetParent failed: %08x\n", hres); - - _test_elem_tag(line, (IUnknown*)off_parent, parent_tag); - IHTMLElement_Release(off_parent); - IHTMLElement_Release(elem); + + if(off_parent) { + _test_elem_tag(line, (IUnknown*)off_parent, parent_tag); + IHTMLElement_Release(off_parent); + }else { + ok_(__FILE__,line) (parent_tag == NULL, "Offset parent is NULL. %s expected\n", wine_dbgstr_w(parent_tag)); + } } #define test_elem_source_index(a,b) _test_elem_source_index(__LINE__,a,b) @@ -8902,6 +8905,10 @@ static void test_elems(IHTMLDocument2 *doc) IHTMLElement_Release(elem); } + elem = doc_get_body(doc); + test_elem_offset((IUnknown*)elem, NULL); + IHTMLElement_Release(elem); + elem = get_elem_by_id(doc, L"sc", TRUE); if(elem) { IHTMLScriptElement *script;