Commit 6f2f577f authored by Alistair Leslie-Hughes's avatar Alistair Leslie-Hughes Committed by Alexandre Julliard

msxml3: Implment IXMLParser SetInput.

parent 6ab04040
...@@ -135,6 +135,9 @@ static void create_test(void) ...@@ -135,6 +135,9 @@ static void create_test(void)
ok(hr == S_OK, "Expected S_OK got 0x%08x\n", hr); ok(hr == S_OK, "Expected S_OK got 0x%08x\n", hr);
ok(nodefactory == &thenodefactory, "expected NULL\n"); ok(nodefactory == &thenodefactory, "expected NULL\n");
hr = IXMLParser_SetInput(parser, NULL);
ok(hr == E_INVALIDARG, "Expected S_OK got 0x%08x\n", hr);
hr = IXMLParser_SetFactory(parser, NULL); hr = IXMLParser_SetFactory(parser, NULL);
ok(hr == S_OK, "Expected S_OK got 0x%08x\n", hr); ok(hr == S_OK, "Expected S_OK got 0x%08x\n", hr);
......
...@@ -47,6 +47,7 @@ typedef struct _xmlparser ...@@ -47,6 +47,7 @@ typedef struct _xmlparser
{ {
IXMLParser IXMLParser_iface; IXMLParser IXMLParser_iface;
IXMLNodeFactory *nodefactory; IXMLNodeFactory *nodefactory;
IUnknown *input;
LONG ref; LONG ref;
int flags; int flags;
...@@ -96,6 +97,9 @@ static ULONG WINAPI xmlparser_Release(IXMLParser* iface) ...@@ -96,6 +97,9 @@ static ULONG WINAPI xmlparser_Release(IXMLParser* iface)
TRACE("(%p)->(%d)\n", This, ref); TRACE("(%p)->(%d)\n", This, ref);
if ( ref == 0 ) if ( ref == 0 )
{ {
if(This->input)
IUnknown_Release(This->input);
if(This->nodefactory) if(This->nodefactory)
IXMLNodeFactory_Release(This->nodefactory); IXMLNodeFactory_Release(This->nodefactory);
...@@ -246,9 +250,18 @@ static HRESULT WINAPI xmlparser_SetInput(IXMLParser *iface, IUnknown *pStm) ...@@ -246,9 +250,18 @@ static HRESULT WINAPI xmlparser_SetInput(IXMLParser *iface, IUnknown *pStm)
{ {
xmlparser *This = impl_from_IXMLParser( iface ); xmlparser *This = impl_from_IXMLParser( iface );
FIXME("(%p %p)\n", This, pStm); TRACE("(%p %p)\n", This, pStm);
return E_NOTIMPL; if(!pStm)
return E_INVALIDARG;
if(This->input)
IUnknown_Release(This->input);
This->input = pStm;
IUnknown_AddRef(This->input);
return S_OK;
} }
static HRESULT WINAPI xmlparser_PushData(IXMLParser *iface, const char *pData, static HRESULT WINAPI xmlparser_PushData(IXMLParser *iface, const char *pData,
...@@ -435,6 +448,7 @@ HRESULT XMLParser_create(IUnknown* pUnkOuter, void**ppObj) ...@@ -435,6 +448,7 @@ HRESULT XMLParser_create(IUnknown* pUnkOuter, void**ppObj)
This->IXMLParser_iface.lpVtbl = &xmlparser_vtbl; This->IXMLParser_iface.lpVtbl = &xmlparser_vtbl;
This->nodefactory = NULL; This->nodefactory = NULL;
This->input = NULL;
This->flags = 0; This->flags = 0;
This->ref = 1; This->ref = 1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment