From 9fe98546e44719684102f1d39ae7197a6cee3960 Mon Sep 17 00:00:00 2001 From: Michael Karcher Date: Thu, 9 Oct 2008 15:36:14 +0200 Subject: [PATCH] msxml3: Text node should not aggregate element. --- dlls/msxml3/tests/domdoc.c | 3 +++ dlls/msxml3/text.c | 17 ++++++++--------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index 9bc14699b79..15a60e5de24 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -559,6 +559,9 @@ static void test_domdoc( void ) { IXMLDOMNamedNodeMap *pAttribs; + r = IXMLDOMText_QueryInterface(nodetext, &IID_IXMLDOMElement, (LPVOID*)&element); + ok(r == E_NOINTERFACE, "ret %08x\n", r ); + /* Text Last Child Checks */ r = IXMLDOMText_get_lastChild(nodetext, NULL); ok(r == E_INVALIDARG, "ret %08x\n", r ); diff --git a/dlls/msxml3/text.c b/dlls/msxml3/text.c index 59b6bfe7098..7cb1d42e215 100644 --- a/dlls/msxml3/text.c +++ b/dlls/msxml3/text.c @@ -42,7 +42,7 @@ typedef struct _domtext { const struct IXMLDOMTextVtbl *lpVtbl; LONG ref; - IUnknown *element_unk; + IUnknown *node_unk; IXMLDOMNode *node; } domtext; @@ -66,10 +66,9 @@ static HRESULT WINAPI domtext_QueryInterface( { *ppvObject = iface; } - else if ( IsEqualGUID( riid, &IID_IXMLDOMNode ) || - IsEqualGUID( riid, &IID_IXMLDOMElement ) ) + else if ( IsEqualGUID( riid, &IID_IXMLDOMNode ) ) { - return IUnknown_QueryInterface(This->element_unk, riid, ppvObject); + return IUnknown_QueryInterface(This->node_unk, riid, ppvObject); } else { @@ -98,7 +97,7 @@ static ULONG WINAPI domtext_Release( ref = InterlockedDecrement( &This->ref ); if ( ref == 0 ) { - IUnknown_Release( This->element_unk ); + IUnknown_Release( This->node_unk ); HeapFree( GetProcessHeap(), 0, This ); } @@ -773,17 +772,17 @@ IUnknown* create_text( xmlNodePtr text ) This->lpVtbl = &domtext_vtbl; This->ref = 1; - This->element_unk = create_element( text, (IUnknown*)&This->lpVtbl ); - if(!This->element_unk) + This->node_unk = create_basic_node( text, (IUnknown*)&This->lpVtbl ); + if(!This->node_unk) { HeapFree(GetProcessHeap(), 0, This); return NULL; } - hr = IUnknown_QueryInterface(This->element_unk, &IID_IXMLDOMNode, (LPVOID*)&This->node); + hr = IUnknown_QueryInterface(This->node_unk, &IID_IXMLDOMNode, (LPVOID*)&This->node); if(FAILED(hr)) { - IUnknown_Release(This->element_unk); + IUnknown_Release(This->node_unk); HeapFree( GetProcessHeap(), 0, This ); return NULL; }