[PATCH 6/9] winedbg: fix bugs in expression's computation

Eric Pouech eric.pouech at gmail.com
Tue Oct 12 11:10:45 CDT 2021


all internal computation are made with DWORD_PTR and LONG_PTR,
so use corresponding internal type for the result

regression introduced in 0ea9fe999c1ed3a8b645476d97d2e0221be17bb5

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

---
 programs/winedbg/expr.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/programs/winedbg/expr.c b/programs/winedbg/expr.c
index e58d394be35..f03ab25c003 100644
--- a/programs/winedbg/expr.c
+++ b/programs/winedbg/expr.c
@@ -476,7 +476,7 @@ struct dbg_lvalue expr_eval(struct expr* exp)
         exp2 = expr_eval(exp->un.binop.exp2);
         if (exp1.type.id == dbg_itype_none || exp2.type.id == dbg_itype_none)
             RaiseException(DEBUG_STATUS_BAD_TYPE, 0, 0, NULL);
-        rtn.type.id = dbg_itype_signed_int;
+        rtn.type.id = dbg_itype_signed_long_int;
         rtn.type.module = 0;
         rtn.addr.Offset = (ULONG_PTR)&exp->un.binop.result;
         type1 = exp1.type;
@@ -609,7 +609,7 @@ struct dbg_lvalue expr_eval(struct expr* exp)
         exp1 = expr_eval(exp->un.unop.exp1);
         if (exp1.type.id == dbg_itype_none) RaiseException(DEBUG_STATUS_BAD_TYPE, 0, 0, NULL);
         rtn.addr.Offset = (ULONG_PTR)&exp->un.unop.result;
-        rtn.type.id     = dbg_itype_signed_int;
+        rtn.type.id     = dbg_itype_signed_long_int;
         rtn.type.module = 0;
         switch (exp->un.unop.unop_type)
 	{




More information about the wine-devel mailing list