[PATCH 4/4] Trace backend error even when user error handler is not set

Nikolay Sivov nsivov at codeweavers.com
Thu Oct 28 17:06:33 CDT 2010


---
 dlls/msxml3/saxreader.c |   21 +++++++++++----------
 1 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/dlls/msxml3/saxreader.c b/dlls/msxml3/saxreader.c
index fd461d1..a1df5c7 100644
--- a/dlls/msxml3/saxreader.c
+++ b/dlls/msxml3/saxreader.c
@@ -1298,15 +1298,6 @@ static void libxmlFatalError(void *ctx, const char *msg, ...)
     DWORD len;
     va_list args;
 
-    if(!has_error_handler(This))
-    {
-        xmlStopParser(This->pParserCtxt);
-        This->ret = E_FAIL;
-        return;
-    }
-
-    FIXME("Error handling is not compatible.\n");
-
     va_start(args, msg);
     vsprintf(message, msg, args);
     va_end(args);
@@ -1319,6 +1310,16 @@ static void libxmlFatalError(void *ctx, const char *msg, ...)
         TRACE("fatal error for %p: %s\n", This, debugstr_w(error));
     }
 
+    if(!has_error_handler(This))
+    {
+        xmlStopParser(This->pParserCtxt);
+        This->ret = E_FAIL;
+        heap_free(error);
+        return;
+    }
+
+    FIXME("Error handling is not compatible.\n");
+
     if(This->vbInterface)
     {
         BSTR bstrError = SysAllocString(error);
@@ -1788,7 +1789,7 @@ static HRESULT internal_parseBuffer(saxreader *This, const char *buffer, int siz
     locator->pParserCtxt->userData = locator;
 
     This->isParsing = TRUE;
-    if(xmlParseDocument(locator->pParserCtxt)) hr = E_FAIL;
+    if(xmlParseDocument(locator->pParserCtxt) == -1) hr = E_FAIL;
     else hr = locator->ret;
     This->isParsing = FALSE;
 
-- 
1.5.6.5



--------------020903080101020703060002--



More information about the wine-patches mailing list