[PATCH] [WineDbg]: added support for printing WCHAR in print_typed_basic
Eric Pouech
eric.pouech at orange.fr
Tue Mar 15 15:18:21 CDT 2011
A+
---
programs/winedbg/memory.c | 16 +++++++++++-----
1 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/programs/winedbg/memory.c b/programs/winedbg/memory.c
index 1c1567b..5a54ec1 100644
--- a/programs/winedbg/memory.c
+++ b/programs/winedbg/memory.c
@@ -29,6 +29,7 @@
#include "debugger.h"
#include "wine/debug.h"
+#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL(winedbg);
@@ -393,18 +394,23 @@ static void print_typed_basic(const struct dbg_lvalue* lvalue)
dbg_printf("%Lf", val_real);
break;
case btChar:
+ case btWChar:
+ /* sometimes WCHAR is defined as btChar with size = 2, so discrimate
+ * Ansi/Unicode based on size, not on basetype
+ */
if (!be_cpu->fetch_integer(lvalue, size, TRUE, &val_int)) return;
- /* FIXME: should do the same for a Unicode character (size == 2) */
print_char:
- if (size == 1 && (val_int < 0x20 || val_int > 0x80))
- dbg_printf("%d", (int)val_int);
- else if (size == 2)
+ if (size == 1 && isprint((char)val_int))
+ dbg_printf("'%c'", (char)val_int);
+ else if (size == 2 && isprintW((WCHAR)val_int))
{
WCHAR wch = (WCHAR)val_int;
+ dbg_printf("'");
dbg_outputW(&wch, 1);
+ dbg_printf("'");
}
else
- dbg_printf("'%c'", (char)val_int);
+ dbg_printf("%d", (int)val_int);
break;
case btBool:
if (!be_cpu->fetch_integer(lvalue, size, TRUE, &val_int)) return;
More information about the wine-patches
mailing list