[PATCH 4/6] Protect SAX character callback from null node

Nikolay Sivov nsivov at codeweavers.com
Sun Mar 13 05:46:45 CDT 2011


---
 dlls/msxml3/domdoc.c |   23 +++++++++++++----------
 1 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c
index 81ffb49..1277ce1 100644
--- a/dlls/msxml3/domdoc.c
+++ b/dlls/msxml3/domdoc.c
@@ -421,19 +421,22 @@ static inline BOOL strn_isspace(xmlChar const* str, int len)
 
 static void sax_characters(void *ctx, const xmlChar *ch, int len)
 {
-    xmlParserCtxtPtr pctx;
-    domdoc const* This;
+    xmlParserCtxtPtr ctxt;
+    const domdoc *This;
 
-    pctx = (xmlParserCtxtPtr) ctx;
-    This = (domdoc const*) pctx->_private;
+    ctxt = (xmlParserCtxtPtr) ctx;
+    This = (const domdoc*) ctxt->_private;
 
-    /* during domdoc_loadXML() the xmlDocPtr->_private data is not available */
-    if (!This->properties->preserving &&
-        !is_preserving_whitespace(pctx->node) &&
-        strn_isspace(ch, len))
-        return;
+    if (ctxt->node)
+    {
+        /* during domdoc_loadXML() the xmlDocPtr->_private data is not available */
+        if (!This->properties->preserving &&
+            !is_preserving_whitespace(ctxt->node) &&
+            strn_isspace(ch, len))
+            return;
+    }
 
-    xmlSAX2Characters(ctx, ch, len);
+    xmlSAX2Characters(ctxt, ch, len);
 }
 
 static void LIBXML2_LOG_CALLBACK sax_error(void* ctx, char const* msg, ...)
-- 
1.5.6.5



--------------050500000300090307000007--



More information about the wine-patches mailing list