Module: wine Branch: master Commit: acac3cced4e4cb5621aa25e8802990b0fe34cd3b URL: http://source.winehq.org/git/wine.git/?a=commit;h=acac3cced4e4cb5621aa25e880...
Author: Eric Pouech eric.pouech@orange.fr Date: Tue Mar 15 21:18:21 2011 +0100
winedbg: Added support for printing WCHAR in print_typed_basic.
---
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;