dbghelp/dwarf: Handle errors in dwarf2_fill_attr by returning a boolean.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
40877456ea
commit
12a778426d
|
@ -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,
|
||||||
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,
|
||||||
{
|
{
|
||||||
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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* 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");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue