Adam Martinson amartinson@codeweavers.com writes:
+#define LIBXML2_OUTPUT_CALLBACK void __WINE_PRINTF_ATTR(2,3) +#define LIBXML2_OUTPUT_CALLBACK_BODY(caller, dbcl, msg) \
- do { \
va_list ap; \char* buf; \int len; \va_start(ap, msg); \len = vsnprintf(NULL, 0, msg, ap); \buf = heap_alloc(len+1); \vsnprintf(buf, len+1, msg, ap); \va_end(ap); \wine_dbg_log(__WINE_DBCL##dbcl, __wine_dbch___default, #caller, buf); \heap_free(buf); \- } while (0)
+#define LIBXML2_XMLERROR_CALLBACK void +#define LIBXML2_XMLERROR_CALLBACK_BODY(caller, err) \
- do { \
enum __wine_debug_class dbcl = __WINE_DBCL_ERR; \switch (err->level) \{ \case XML_ERR_NONE: \dbcl = __WINE_DBCL_TRACE; \break; \case XML_ERR_WARNING: \dbcl = __WINE_DBCL_WARN; \break; \default: \break; \} \wine_dbg_log(dbcl, __wine_dbch___default, #caller, err->message); \- } while (0)
That's ugly, please write the code explicitly instead of using macros, it's not that much code.