Eric Pouech : winedbg: Added support for printing WCHAR in print_typed_basic.
Alexandre Julliard
julliard at winehq.org
Wed Mar 16 12:22:35 CDT 2011
Module: wine
Branch: master
Commit: acac3cced4e4cb5621aa25e8802990b0fe34cd3b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=acac3cced4e4cb5621aa25e8802990b0fe34cd3b
Author: Eric Pouech <eric.pouech at 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;
More information about the wine-cvs
mailing list