msxml: Added ISAXLexicalHandler_comment event.
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 @@
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 @@
reader->sax.endElementNs = libxmlEndElementNS;
reader->sax.characters = libxmlCharacters;
reader->sax.setDocumentLocator = libxmlSetDocumentLocator;
+ reader->sax.comment = libxmlComment;
reader->sax.error = libxmlFatalError;
reader->sax.fatalError = libxmlFatalError;