msxml3: Use a helper to check for created content handler.
This commit is contained in:
parent
7724b053e2
commit
ff992282aa
|
@ -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)
|
||||||
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)
|
||||||
|
|
||||||
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(
|
||||||
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(
|
||||||
|
|
||||||
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(
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
|
|
Loading…
Reference in New Issue