Module: wine Branch: master Commit: f2e6f05fe33a2933e45c0741847bf0dbbf43b940 URL: https://source.winehq.org/git/wine.git/?a=commit;h=f2e6f05fe33a2933e45c07418...
Author: Alexandre Julliard julliard@winehq.org Date: Wed Apr 3 10:02:14 2019 +0200
include: Make wine_dbg_sprintf() into an inline function.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
include/wine/debug.h | 26 +++++++++++++++++++++++++- libs/wine/debug.c | 2 ++ 2 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/include/wine/debug.h b/include/wine/debug.h index 65322d0..fd8e56e 100644 --- a/include/wine/debug.h +++ b/include/wine/debug.h @@ -22,6 +22,7 @@ #define __WINE_WINE_DEBUG_H
#include <stdarg.h> +#include <stdio.h> #include <windef.h> #ifndef _NTSYSTEM_ #include <winbase.h> @@ -169,12 +170,35 @@ extern const char * __cdecl __wine_dbg_strdup( const char *str ); /* These functions return a printable version of a string, including quotes. The string will be valid for some time, but not indefinitely as strings are re-used. */ -extern const char *wine_dbg_sprintf( const char *format, ... ) __WINE_PRINTF_ATTR(1,2);
extern int wine_dbg_printf( const char *format, ... ) __WINE_PRINTF_ATTR(1,2); extern int wine_dbg_log( enum __wine_debug_class cls, struct __wine_debug_channel *ch, const char *func, const char *format, ... ) __WINE_PRINTF_ATTR(4,5);
+#if (defined(__x86_64__) || defined(__aarch64__)) && defined(__GNUC__) && defined(__WINE_USE_MSVCRT) +# define __wine_dbg_cdecl __cdecl +# define __wine_dbg_va_list __builtin_ms_va_list +# define __wine_dbg_va_start(list,arg) __builtin_ms_va_start(list,arg) +# define __wine_dbg_va_end(list) __builtin_ms_va_end(list) +#else +# define __wine_dbg_cdecl +# define __wine_dbg_va_list va_list +# define __wine_dbg_va_start(list,arg) va_start(list,arg) +# define __wine_dbg_va_end(list) va_end(list) +#endif + +static const char * __wine_dbg_cdecl wine_dbg_sprintf( const char *format, ... ) __WINE_PRINTF_ATTR(1,2); +static inline const char * __wine_dbg_cdecl wine_dbg_sprintf( const char *format, ... ) +{ + char buffer[200]; + __wine_dbg_va_list args; + + __wine_dbg_va_start( args, format ); + vsnprintf( buffer, sizeof(buffer), format, args ); + __wine_dbg_va_end( args ); + return __wine_dbg_strdup( buffer ); +} + static inline const char *wine_dbgstr_an( const char *str, int n ) { static const char hex[16] = "0123456789abcdef"; diff --git a/libs/wine/debug.c b/libs/wine/debug.c index 0c3b4ef..1bf59dd 100644 --- a/libs/wine/debug.c +++ b/libs/wine/debug.c @@ -30,6 +30,7 @@ # include <sys/stat.h> #endif
+#define wine_dbg_sprintf wine_dbg_sprintf_inline #define wine_dbgstr_an wine_dbgstr_an_inline #define wine_dbgstr_wn wine_dbgstr_wn_inline #include "wine/debug.h" @@ -228,6 +229,7 @@ int wine_dbg_printf( const char *format, ... ) }
/* printf with temp buffer allocation */ +#undef wine_dbg_sprintf const char *wine_dbg_sprintf( const char *format, ... ) { static const int max_size = 200;