Don't recompute the location when we need to store a location block for later recomputation.
It had also the bad side effect of letting the location to be absolute, which wasn't expected at all.
Signed-off-by: Eric Pouech eric.pouech@gmail.com
--- dlls/dbghelp/dwarf.c | 1 - dlls/dbghelp/tests/dbghelp.c | 2 -- 2 files changed, 3 deletions(-)
diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c index 53274c4f597..a4f426ca6a0 100644 --- a/dlls/dbghelp/dwarf.c +++ b/dlls/dbghelp/dwarf.c @@ -930,7 +930,6 @@ static BOOL dwarf2_compute_location_attr(dwarf2_parse_context_t* ctx, *ptr = xloc.u.block.size; memcpy(ptr + 1, xloc.u.block.ptr, xloc.u.block.size); loc->offset = (ULONG_PTR)ptr; - compute_location(ctx->module, &lctx, loc, NULL, frame); } } return TRUE; diff --git a/dlls/dbghelp/tests/dbghelp.c b/dlls/dbghelp/tests/dbghelp.c index 141b1bdadd8..b73ee020374 100644 --- a/dlls/dbghelp/tests/dbghelp.c +++ b/dlls/dbghelp/tests/dbghelp.c @@ -354,7 +354,6 @@ static void test_symbols(const struct debuggee* dbg) BOOL labelfound = FALSE;
/* 4 made of: 2 parameters, one local, one label */ - todo_wine_if(sizeof(void*)==4) ok(tfp->Count >= 4, "Wrong number of parameters+local variables' type %u\n", tfp->Count);
/* there are other children than parameters / local variables, so need to lookup */ @@ -407,7 +406,6 @@ static void test_symbols(const struct debuggee* dbg) break; } } - if (!found) todo_wine ok(found, "Couldn't find local variable/parameter %ls\n", locpmts[j].name); } ok(labelfound, "Couldn't find the label scaramouche\n");