Piotr Caban : msxml3: Added ISAXLocator_getPublicId.
Alexandre Julliard
julliard at winehq.org
Thu Jul 17 06:38:42 CDT 2008
Module: wine
Branch: master
Commit: 60ca0a7b5358c6e2b9d2ac9cb6f08327ff950d0d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=60ca0a7b5358c6e2b9d2ac9cb6f08327ff950d0d
Author: Piotr Caban <piotr.caban at gmail.com>
Date: Thu Jul 17 00:42:01 2008 +0200
msxml3: Added ISAXLocator_getPublicId.
---
dlls/msxml3/saxreader.c | 21 +++++++++++++++++++--
1 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/dlls/msxml3/saxreader.c b/dlls/msxml3/saxreader.c
index 16f1f23..3d807bb 100644
--- a/dlls/msxml3/saxreader.c
+++ b/dlls/msxml3/saxreader.c
@@ -62,6 +62,7 @@ typedef struct _saxlocator
saxreader *saxreader;
HRESULT ret;
xmlParserCtxtPtr pParserCtxt;
+ WCHAR *publicId;
int lastLine;
int lastColumn;
} saxlocator;
@@ -307,6 +308,9 @@ static ULONG WINAPI isaxlocator_Release(
ref = InterlockedDecrement( &This->ref );
if ( ref == 0 )
{
+ if(This->publicId)
+ SysFreeString(This->publicId);
+
ISAXXMLReader_Release((ISAXXMLReader*)&This->saxreader->lpSAXXMLReaderVtbl);
HeapFree( GetProcessHeap(), 0, This );
}
@@ -339,10 +343,22 @@ static HRESULT WINAPI isaxlocator_getPublicId(
ISAXLocator* iface,
const WCHAR ** ppwchPublicId)
{
+ BSTR publicId;
saxlocator *This = impl_from_ISAXLocator( iface );
- FIXME("(%p)->(%p) stub\n", This, ppwchPublicId);
- return E_NOTIMPL;
+ if(This->publicId) SysFreeString(This->publicId);
+
+ publicId = bstr_from_xmlChar(xmlSAX2GetPublicId(This->pParserCtxt));
+ if(SysStringLen(publicId))
+ This->publicId = (WCHAR*)&publicId;
+ else
+ {
+ SysFreeString(publicId);
+ This->publicId = NULL;
+ }
+
+ *ppwchPublicId = This->publicId;
+ return S_OK;
}
static HRESULT WINAPI isaxlocator_getSystemId(
@@ -381,6 +397,7 @@ static HRESULT SAXLocator_create(saxreader *reader, saxlocator **ppsaxlocator)
ISAXXMLReader_AddRef((ISAXXMLReader*)&reader->lpSAXXMLReaderVtbl);
locator->pParserCtxt = NULL;
+ locator->publicId = NULL;
locator->lastLine = 0;
locator->lastColumn = 0;
locator->ret = S_OK;
More information about the wine-cvs
mailing list