Commit ff992282 authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

msxml3: Use a helper to check for created content handler.

parent 7724b053
...@@ -126,6 +126,11 @@ static inline saxattributes *impl_from_ISAXAttributes( ISAXAttributes *iface ) ...@@ -126,6 +126,11 @@ static inline saxattributes *impl_from_ISAXAttributes( ISAXAttributes *iface )
return (saxattributes *)((char*)iface - FIELD_OFFSET(saxattributes, lpSAXAttributesVtbl)); return (saxattributes *)((char*)iface - FIELD_OFFSET(saxattributes, lpSAXAttributesVtbl));
} }
static inline BOOL has_content_handler(const saxlocator *locator)
{
return (locator->vbInterface && locator->saxreader->vbcontentHandler) ||
(!locator->vbInterface && locator->saxreader->contentHandler);
}
static HRESULT namespacePush(saxlocator *locator, int ns) static HRESULT namespacePush(saxlocator *locator, int ns)
{ {
...@@ -978,8 +983,7 @@ static void libxmlStartDocument(void *ctx) ...@@ -978,8 +983,7 @@ static void libxmlStartDocument(void *ctx)
saxlocator *This = ctx; saxlocator *This = ctx;
HRESULT hr; HRESULT hr;
if((This->vbInterface && This->saxreader->vbcontentHandler) if(has_content_handler(This))
|| (!This->vbInterface && This->saxreader->contentHandler))
{ {
if(This->vbInterface) if(This->vbInterface)
hr = IVBSAXContentHandler_startDocument(This->saxreader->vbcontentHandler); hr = IVBSAXContentHandler_startDocument(This->saxreader->vbcontentHandler);
...@@ -1003,8 +1007,7 @@ static void libxmlEndDocument(void *ctx) ...@@ -1003,8 +1007,7 @@ static void libxmlEndDocument(void *ctx)
if(This->ret != S_OK) return; if(This->ret != S_OK) return;
if((This->vbInterface && This->saxreader->vbcontentHandler) if(has_content_handler(This))
|| (!This->vbInterface && This->saxreader->contentHandler))
{ {
if(This->vbInterface) if(This->vbInterface)
hr = IVBSAXContentHandler_endDocument(This->saxreader->vbcontentHandler); hr = IVBSAXContentHandler_endDocument(This->saxreader->vbcontentHandler);
...@@ -1039,8 +1042,7 @@ static void libxmlStartElementNS( ...@@ -1039,8 +1042,7 @@ static void libxmlStartElementNS(
update_position(This, (xmlChar*)This->pParserCtxt->input->cur+1); update_position(This, (xmlChar*)This->pParserCtxt->input->cur+1);
hr = namespacePush(This, nb_namespaces); hr = namespacePush(This, nb_namespaces);
if(hr==S_OK && ((This->vbInterface && This->saxreader->vbcontentHandler) if(hr==S_OK && has_content_handler(This))
|| (!This->vbInterface && This->saxreader->contentHandler)))
{ {
for(index=0; index<nb_namespaces; index++) for(index=0; index<nb_namespaces; index++)
{ {
...@@ -1119,8 +1121,7 @@ static void libxmlEndElementNS( ...@@ -1119,8 +1121,7 @@ static void libxmlEndElementNS(
nsNr = namespacePop(This); nsNr = namespacePop(This);
if((This->vbInterface && This->saxreader->vbcontentHandler) if(has_content_handler(This))
|| (!This->vbInterface && This->saxreader->contentHandler))
{ {
NamespaceUri = bstr_from_xmlChar(URI); NamespaceUri = bstr_from_xmlChar(URI);
LocalName = bstr_from_xmlChar(localname); LocalName = bstr_from_xmlChar(localname);
...@@ -1186,9 +1187,7 @@ static void libxmlCharacters( ...@@ -1186,9 +1187,7 @@ static void libxmlCharacters(
xmlChar *end; xmlChar *end;
BOOL lastEvent = FALSE; BOOL lastEvent = FALSE;
if((This->vbInterface && !This->saxreader->vbcontentHandler) if(!(has_content_handler(This))) return;
|| (!This->vbInterface && !This->saxreader->contentHandler))
return;
cur = (xmlChar*)ch; cur = (xmlChar*)ch;
if(*(ch-1)=='\r') cur--; if(*(ch-1)=='\r') cur--;
...@@ -1384,8 +1383,7 @@ static void libxmlCDataBlock(void *ctx, const xmlChar *value, int len) ...@@ -1384,8 +1383,7 @@ static void libxmlCDataBlock(void *ctx, const xmlChar *value, int len)
if(change) *end = '\n'; if(change) *end = '\n';
if((This->vbInterface && This->saxreader->vbcontentHandler) || if(has_content_handler(This))
(!This->vbInterface && This->saxreader->contentHandler))
{ {
Chars = bstr_from_xmlCharN(cur, end-cur+1); Chars = bstr_from_xmlCharN(cur, end-cur+1);
if(This->vbInterface) if(This->vbInterface)
......
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