Module: wine Branch: master Commit: 1c037bf5641d6dab556439882c1dc26d11a96b68 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1c037bf5641d6dab556439882c...
Author: Eric Pouech eric.pouech@orange.fr Date: Sun Jun 27 18:55:15 2010 +0200
dbghelp: Correctly handle the RULE_EXPRESSION when computing CFA in dwarf debug info.
---
dlls/dbghelp/dwarf.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c index 274410e..413ae44 100644 --- a/dlls/dbghelp/dwarf.c +++ b/dlls/dbghelp/dwarf.c @@ -2877,7 +2877,12 @@ static void apply_frame_info(struct module* module, struct cpu_stack_walk* csw, switch (info->cfa_rule) { case RULE_EXPRESSION: - *cfa = *(ULONG_PTR*)eval_expression(module, csw, (const unsigned char*)info->cfa_offset, context); + *cfa = eval_expression(module, csw, (const unsigned char*)info->cfa_offset, context); + if (!sw_read_mem(csw, *cfa, cfa, sizeof(*cfa))) + { + WARN("Couldn't read memory at %p\n", (void*)*cfa); + return; + } break; case RULE_VAL_EXPRESSION: *cfa = eval_expression(module, csw, (const unsigned char*)info->cfa_offset, context);