Dmitry Kislyuk : mshtml: Fix NULL offset parent handling in IHTMLElement::get_offsetParent.

Alexandre Julliard julliard at winehq.org
Mon Mar 29 16:00:04 CDT 2021


Module: wine
Branch: master
Commit: 35d0fda0f044497df90d1ef5c1e2e359e8d3166e
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=35d0fda0f044497df90d1ef5c1e2e359e8d3166e

Author: Dmitry Kislyuk <dimaki at rocketmail.com>
Date:   Mon Mar 29 13:21:43 2021 +0200

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 <dimaki at rocketmail.com>
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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 9e5d184ff3f..81993db224d 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 a6ca66a2885..1253e9cdea8 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -1299,11 +1299,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)
@@ -8937,6 +8940,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;




More information about the wine-cvs mailing list