Alexandre Julliard : msxml3: Fix incorrect uses of va_list arguments.

Alexandre Julliard julliard at winehq.org
Wed Nov 17 10:38:06 CST 2010


Module: wine
Branch: master
Commit: d70b3e592922a2f361bd558a4ee9fbd1e6aed4fa
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d70b3e592922a2f361bd558a4ee9fbd1e6aed4fa

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Nov 17 14:21:09 2010 +0100

msxml3: Fix incorrect uses of va_list arguments.

---

 dlls/msxml3/main.c          |   42 ++++++++++++++++++++++++------------------
 dlls/msxml3/msxml_private.h |    4 ++--
 2 files changed, 26 insertions(+), 20 deletions(-)

diff --git a/dlls/msxml3/main.c b/dlls/msxml3/main.c
index 49ef6fa..1201d2b 100644
--- a/dlls/msxml3/main.c
+++ b/dlls/msxml3/main.c
@@ -61,29 +61,35 @@ void wineXmlCallbackLog(char const* caller, xmlErrorLevel lvl, char const* msg,
             break;
     }
 
-    if (ap)
+    do
     {
-        do
-        {
-            heap_free(buf);
-            buf = heap_alloc(len);
-            needed = vsnprintf(buf, len, msg, ap);
-            if (needed == -1)
-                len *= 2;
-            else if (needed >= len)
-                len = needed + 1;
-            else
-                needed = 0;
-        }
-        while (needed);
-
-        wine_dbg_log(dbcl, &__wine_dbch_msxml, caller, buf);
         heap_free(buf);
+        buf = heap_alloc(len);
+        needed = vsnprintf(buf, len, msg, ap);
+        if (needed == -1)
+            len *= 2;
+        else if (needed >= len)
+            len = needed + 1;
+        else
+            needed = 0;
     }
-    else
+    while (needed);
+
+    wine_dbg_log(dbcl, &__wine_dbch_msxml, caller, "%s", buf);
+    heap_free(buf);
+}
+
+void wineXmlCallbackError(char const* caller, xmlErrorPtr err)
+{
+    enum __wine_debug_class dbcl;
+
+    switch (err->level)
     {
-        wine_dbg_log(dbcl, &__wine_dbch_msxml, caller, msg);
+    case XML_ERR_NONE:    dbcl = __WINE_DBCL_TRACE; break;
+    case XML_ERR_WARNING: dbcl = __WINE_DBCL_WARN; break;
+    default:              dbcl = __WINE_DBCL_ERR; break;
     }
+    wine_dbg_log(dbcl, &__wine_dbch_msxml, caller, "%s", err->message);
 }
 
 /* Support for loading xml files from a Wine Windows drive */
diff --git a/dlls/msxml3/msxml_private.h b/dlls/msxml3/msxml_private.h
index 9980fdd..f3faa8a 100644
--- a/dlls/msxml3/msxml_private.h
+++ b/dlls/msxml3/msxml_private.h
@@ -209,6 +209,7 @@ extern xmlNodePtr xmldoc_unlink_xmldecl(xmlDocPtr doc);
 extern HRESULT XMLElement_create( IUnknown *pUnkOuter, xmlNodePtr node, LPVOID *ppObj, BOOL own );
 
 extern void wineXmlCallbackLog(char const* caller, xmlErrorLevel lvl, char const* msg, va_list ap);
+extern void wineXmlCallbackError(char const* caller, xmlErrorPtr err);
 
 #define LIBXML2_LOG_CALLBACK __WINE_PRINTF_ATTR(2,3)
 
@@ -221,8 +222,7 @@ extern void wineXmlCallbackLog(char const* caller, xmlErrorLevel lvl, char const
 #define LIBXML2_CALLBACK_ERR(caller, msg, ap) \
         wineXmlCallbackLog(#caller, XML_ERR_ERROR, msg, ap)
 
-#define LIBXML2_CALLBACK_SERROR(caller, err) \
-        wineXmlCallbackLog(#caller, err->level, err->message, NULL)
+#define LIBXML2_CALLBACK_SERROR(caller, err) wineXmlCallbackError(#caller, err)
 
 extern BOOL is_preserving_whitespace(xmlNodePtr node);
 




More information about the wine-cvs mailing list