[PATCH 07/17] programs/winedbg: split print_longlong into print_(s|u)decimal (to mimic print_hex)

Eric Pouech eric.pouech at gmail.com
Tue Dec 7 11:45:57 CST 2021


Signed-off-by: Eric Pouech <eric.pouech at gmail.com>

---
 programs/winedbg/memory.c |   23 +++++++----------------
 1 file changed, 7 insertions(+), 16 deletions(-)

diff --git a/programs/winedbg/memory.c b/programs/winedbg/memory.c
index db4060d816a..b0111d69221 100644
--- a/programs/winedbg/memory.c
+++ b/programs/winedbg/memory.c
@@ -346,21 +346,12 @@ char* memory_offset_to_string(char *str, DWORD64 offset, unsigned mode)
     return str;
 }
 
-static void dbg_print_longlong(LONGLONG sv, BOOL is_signed)
+static inline void dbg_print_sdecimal(dbg_lgint_t sv)
 {
-    char      tmp[24], *ptr = tmp + sizeof(tmp) - 1;
-    ULONGLONG 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);
+    dbg_printf("%I64d", sv);
 }
 
-static void dbg_print_hex(DWORD size, ULONGLONG sv)
+static void dbg_print_hex(DWORD size, dbg_lgint_t sv)
 {
     if (!sv)
         dbg_printf("0");
@@ -512,7 +503,7 @@ static void print_typed_basic(const struct dbg_lvalue* lvalue)
                     fcp->Start += 256;
                 }
             }
-            if (!ok) dbg_print_longlong(val_int, TRUE);
+            if (!ok) dbg_print_sdecimal(val_int);
         }
         break;
     default:
@@ -543,11 +534,11 @@ void print_basic(const struct dbg_lvalue* lvalue, char format)
         switch (format)
         {
         case 'x':
-            dbg_print_hex(size, (ULONGLONG)res);
+            dbg_print_hex(size, res);
             return;
 
         case 'd':
-            dbg_print_longlong(res, TRUE);
+            dbg_print_sdecimal(res);
             return;
 
         case 'c':
@@ -570,7 +561,7 @@ void print_basic(const struct dbg_lvalue* lvalue, char format)
     }
     if (lvalue->type.id == dbg_itype_segptr)
     {
-        dbg_print_longlong(types_extract_as_lgint(lvalue, NULL, NULL), TRUE);
+        dbg_print_sdecimal(types_extract_as_integer(lvalue));
     }
     else print_typed_basic(lvalue);
 }




More information about the wine-devel mailing list