Fixed disassembling functions to handle 16-bit code segments properly.
diff --git a/programs/winedbg/memory.c b/programs/winedbg/memory.c index 8590b21..ac438ee 100644 --- a/programs/winedbg/memory.c +++ b/programs/winedbg/memory.c
@@ -151,7 +151,11 @@ ADDRESS addr; void *linear; - if (lvalue->type.id == dbg_itype_none) addr = lvalue->addr; + if (lvalue->type.id == dbg_itype_none) + { + be_cpu->build_addr(dbg_curr_thread->handle, &dbg_context, + &addr, lvalue->addr.Segment, lvalue->addr.Offset); + } else { addr.Mode = AddrModeFlat; @@ -638,8 +642,16 @@ { if (xstart) { - last.Mode = AddrModeFlat; - last.Offset = types_extract_as_integer(xstart); + if (xstart->type.id == dbg_itype_none) + { + be_cpu->build_addr(dbg_curr_thread->handle, &dbg_context, + &last, xstart->addr.Segment, xstart->addr.Offset); + } + else + { + last.Mode = AddrModeFlat; + last.Offset = types_extract_as_integer( xstart ); + } } if (xend) stop = types_extract_as_integer(xend);