Commit 12a77842 authored by Eric Pouech's avatar Eric Pouech Committed by Alexandre Julliard

dbghelp/dwarf: Handle errors in dwarf2_fill_attr by returning a boolean.

parent 40877456
...@@ -509,7 +509,7 @@ static void dwarf2_swallow_attribute(dwarf2_traverse_context_t* ctx, ...@@ -509,7 +509,7 @@ static void dwarf2_swallow_attribute(dwarf2_traverse_context_t* ctx,
ctx->data += step; ctx->data += step;
} }
static void dwarf2_fill_attr(const dwarf2_parse_context_t* ctx, static BOOL dwarf2_fill_attr(const dwarf2_parse_context_t* ctx,
const dwarf2_abbrev_entry_attr_t* abbrev_attr, const dwarf2_abbrev_entry_attr_t* abbrev_attr,
const unsigned char* data, const unsigned char* data,
struct attribute* attr) struct attribute* attr)
...@@ -637,6 +637,7 @@ static void dwarf2_fill_attr(const dwarf2_parse_context_t* ctx, ...@@ -637,6 +637,7 @@ static void dwarf2_fill_attr(const dwarf2_parse_context_t* ctx,
FIXME("Unhandled attribute form %lx\n", abbrev_attr->form); FIXME("Unhandled attribute form %lx\n", abbrev_attr->form);
break; break;
} }
return TRUE;
} }
static BOOL dwarf2_find_attribute(const dwarf2_parse_context_t* ctx, static BOOL dwarf2_find_attribute(const dwarf2_parse_context_t* ctx,
...@@ -655,8 +656,7 @@ static BOOL dwarf2_find_attribute(const dwarf2_parse_context_t* ctx, ...@@ -655,8 +656,7 @@ static BOOL dwarf2_find_attribute(const dwarf2_parse_context_t* ctx,
{ {
if (abbrev_attr->attribute == at) if (abbrev_attr->attribute == at)
{ {
dwarf2_fill_attr(ctx, abbrev_attr, di->data[i], attr); return dwarf2_fill_attr(ctx, abbrev_attr, di->data[i], attr);
return TRUE;
} }
if ((abbrev_attr->attribute == DW_AT_abstract_origin || if ((abbrev_attr->attribute == DW_AT_abstract_origin ||
abbrev_attr->attribute == DW_AT_specification) && abbrev_attr->attribute == DW_AT_specification) &&
...@@ -671,8 +671,8 @@ static BOOL dwarf2_find_attribute(const dwarf2_parse_context_t* ctx, ...@@ -671,8 +671,8 @@ static BOOL dwarf2_find_attribute(const dwarf2_parse_context_t* ctx,
} }
} }
/* do we have either an abstract origin or a specification debug entry to look into ? */ /* do we have either an abstract origin or a specification debug entry to look into ? */
if (!ref_abbrev_attr) break; if (!ref_abbrev_attr || !dwarf2_fill_attr(ctx, ref_abbrev_attr, di->data[refidx], attr))
dwarf2_fill_attr(ctx, ref_abbrev_attr, di->data[refidx], attr); break;
if (!(di = sparse_array_find(&ctx->debug_info_table, attr->u.uvalue))) if (!(di = sparse_array_find(&ctx->debug_info_table, attr->u.uvalue)))
FIXME("Should have found the debug info entry\n"); FIXME("Should have found the debug info entry\n");
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment