[PATCH] [WineDbg]: printing integral value

Eric Pouech eric.pouech at wanadoo.fr
Mon Sep 25 15:45:39 CDT 2006


- put back the %d format for printing integral values even
  for 64bit internal values as the default format in winebdg
  command imposes

A+
---

 programs/winedbg/memory.c |   20 +++++++++++++++++---
 1 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/programs/winedbg/memory.c b/programs/winedbg/memory.c
index cab1327..e335597 100644
--- a/programs/winedbg/memory.c
+++ b/programs/winedbg/memory.c
@@ -299,6 +299,20 @@ #endif
     return str;
 }
 
+static void dbg_print_longlong(LONGLONG sv, BOOL is_signed)
+{
+    char                tmp[24], *ptr = tmp + sizeof(tmp) - 1;
+    unsigned long long  uv, div;
+    *ptr = '\0';
+    if (is_signed && sv < 0)    uv = -sv;
+    else                        { uv = sv; is_signed = FALSE; }
+    for (div = 10; uv; div *= 10, uv /= 10)
+        *--ptr = '0' + (uv % 10);
+    if (ptr == tmp + sizeof(tmp) - 1) *--ptr = '0';
+    if (is_signed) *--ptr = '-';
+    dbg_printf("%s", ptr);
+}
+
 static void print_typed_basic(const struct dbg_lvalue* lvalue)
 {
     LONGLONG            val_int;
@@ -326,12 +340,12 @@ static void print_typed_basic(const stru
         case btInt:
         case btLong:
             if (!be_cpu->fetch_integer(lvalue, size, TRUE, &val_int)) return;
-            dbg_printf("%s", wine_dbgstr_longlong(val_int));
+            dbg_print_longlong(val_int, TRUE);
             break;
         case btUInt:
         case btULong:
             if (!be_cpu->fetch_integer(lvalue, size, FALSE, &val_int)) return;
-            dbg_printf("%s", wine_dbgstr_longlong(val_int));
+            dbg_print_longlong(val_int, FALSE);
             break;
         case btFloat:
             if (!be_cpu->fetch_float(lvalue, size, &val_real)) return;
@@ -438,7 +452,7 @@ static void print_typed_basic(const stru
                 count -= min(count, 256);
                 fcp->Start += 256;
             }
-            if (!ok) dbg_printf("%s", wine_dbgstr_longlong(val_int));
+            if (!ok) dbg_print_longlong(val_int, TRUE);
         }
         break;
     default:



More information about the wine-patches mailing list