Module: wine Branch: master Commit: 96a38c93d54751c5593e5780e1722322cb498e1f URL: http://source.winehq.org/git/wine.git/?a=commit;h=96a38c93d54751c5593e5780e1...
Author: Eric Pouech eric.pouech@orange.fr Date: Sat Mar 26 12:16:39 2011 +0100
dbghelp: Return proper null value when lookup_type fails.
---
dlls/dbghelp/dwarf.c | 26 ++++++++++++++------------ 1 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c index 5596c45..f0eabaf 100644 --- a/dlls/dbghelp/dwarf.c +++ b/dlls/dbghelp/dwarf.c @@ -941,22 +941,24 @@ static BOOL dwarf2_compute_location_attr(dwarf2_parse_context_t* ctx, static struct symt* dwarf2_lookup_type(dwarf2_parse_context_t* ctx, const dwarf2_debug_info_t* di) { - struct attribute attr; + struct attribute attr; + dwarf2_debug_info_t* type;
- if (dwarf2_find_attribute(ctx, di, DW_AT_type, &attr)) + if (!dwarf2_find_attribute(ctx, di, DW_AT_type, &attr)) + return NULL; + if (!(type = sparse_array_find(&ctx->debug_info_table, attr.u.uvalue))) { - dwarf2_debug_info_t* type; - - type = sparse_array_find(&ctx->debug_info_table, attr.u.uvalue); - if (!type) FIXME("Unable to find back reference to type %lx\n", attr.u.uvalue); + FIXME("Unable to find back reference to type %lx\n", attr.u.uvalue); + return NULL; + } + if (!type->symt) + { + /* load the debug info entity */ + dwarf2_load_one_entry(ctx, type); if (!type->symt) - { - /* load the debug info entity */ - dwarf2_load_one_entry(ctx, type); - } - return type->symt; + FIXME("Unable to load forward reference for tag %lx\n", type->abbrev->tag); } - return NULL; + return type->symt; }
static const char* dwarf2_get_cpp_name(dwarf2_parse_context_t* ctx, dwarf2_debug_info_t* di, const char* name)