Piotr Caban : msxml: Added ISAXLexicalHandler_comment event.

Alexandre Julliard julliard at winehq.org
Wed Oct 8 08:33:11 CDT 2008


Module: wine
Branch: master
Commit: db2761a8d6b2c2885df9e32c0738c93b2ac0da25
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=db2761a8d6b2c2885df9e32c0738c93b2ac0da25

Author: Piotr Caban <piotr.caban at gmail.com>
Date:   Tue Oct  7 22:11:04 2008 +0200

msxml: Added ISAXLexicalHandler_comment event.

---

 dlls/msxml3/saxreader.c |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/dlls/msxml3/saxreader.c b/dlls/msxml3/saxreader.c
index 94a7e1d..3e7e332 100644
--- a/dlls/msxml3/saxreader.c
+++ b/dlls/msxml3/saxreader.c
@@ -1260,6 +1260,37 @@ static void libxmlSetDocumentLocator(
         format_error_message_from_id(This, hr);
 }
 
+static void libxmlComment(void *ctx, const xmlChar *value)
+{
+    saxlocator *This = ctx;
+    BSTR bValue;
+    HRESULT hr;
+    xmlChar *beg = (xmlChar*)This->pParserCtxt->input->cur;
+
+    while(memcmp(beg-4, "<!--", sizeof(char[4]))) beg--;
+    update_position(This, beg);
+
+    if(!This->vbInterface && !This->saxreader->lexicalHandler) return;
+    if(This->vbInterface && !This->saxreader->vblexicalHandler) return;
+
+    bValue = bstr_from_xmlChar(value);
+
+    if(This->vbInterface)
+        hr = IVBSAXLexicalHandler_comment(
+                This->saxreader->vblexicalHandler, &bValue);
+    else
+        hr = ISAXLexicalHandler_comment(
+                This->saxreader->lexicalHandler,
+                bValue, SysStringLen(bValue));
+
+    SysFreeString(bValue);
+
+    if(FAILED(hr))
+        format_error_message_from_id(This, hr);
+
+    update_position(This, NULL);
+}
+
 static void libxmlFatalError(void *ctx, const char *msg, ...)
 {
     saxlocator *This = ctx;
@@ -2719,6 +2750,7 @@ HRESULT SAXXMLReader_create(IUnknown *pUnkOuter, LPVOID *ppObj)
     reader->sax.endElementNs = libxmlEndElementNS;
     reader->sax.characters = libxmlCharacters;
     reader->sax.setDocumentLocator = libxmlSetDocumentLocator;
+    reader->sax.comment = libxmlComment;
     reader->sax.error = libxmlFatalError;
     reader->sax.fatalError = libxmlFatalError;
 




More information about the wine-cvs mailing list