Module: wine Branch: master Commit: d70b3e592922a2f361bd558a4ee9fbd1e6aed4fa URL: http://source.winehq.org/git/wine.git/?a=commit;h=d70b3e592922a2f361bd558a4e...
Author: Alexandre Julliard julliard@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);