From 1dab61125ee0ffaac14c142828ec06310050fa89 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov <nsivov@codeweavers.com> Date: Thu, 16 Feb 2012 20:01:07 +0300 Subject: [PATCH] msxml3: Use static buffer when tracing libxml2 error messages. --- dlls/msxml3/main.c | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/dlls/msxml3/main.c b/dlls/msxml3/main.c index 464ef909d0b..e01d3314f36 100644 --- a/dlls/msxml3/main.c +++ b/dlls/msxml3/main.c @@ -62,9 +62,11 @@ HINSTANCE MSXML_hInstance = NULL; void wineXmlCallbackLog(char const* caller, xmlErrorLevel lvl, char const* msg, va_list ap) { - char* buf = NULL; - int len = 32, needed; - enum __wine_debug_class dbcl = __WINE_DBCL_ERR; + static const int max_size = 200; + enum __wine_debug_class dbcl; + char buff[max_size]; + int len; + switch (lvl) { case XML_ERR_NONE: @@ -74,25 +76,14 @@ void wineXmlCallbackLog(char const* caller, xmlErrorLevel lvl, char const* msg, dbcl = __WINE_DBCL_WARN; break; default: + dbcl = __WINE_DBCL_ERR; break; } - 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); + len = vsnprintf(buff, max_size, msg, ap); + if (len == -1 || len >= max_size) buff[max_size-1] = 0; - wine_dbg_log(dbcl, &__wine_dbch_msxml, caller, "%s", buf); - heap_free(buf); + wine_dbg_log(dbcl, &__wine_dbch_msxml, caller, "%s", buff); } void wineXmlCallbackError(char const* caller, xmlErrorPtr err) -- GitLab