Alexandre Julliard : include: Make wine_dbg_sprintf() into an inline function.
Alexandre Julliard
julliard at winehq.org
Wed Apr 3 15:26:18 CDT 2019
Module: wine
Branch: master
Commit: f2e6f05fe33a2933e45c0741847bf0dbbf43b940
URL: https://source.winehq.org/git/wine.git/?a=commit;h=f2e6f05fe33a2933e45c0741847bf0dbbf43b940
Author: Alexandre Julliard <julliard at 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 at 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;
More information about the wine-cvs
mailing list