[PATCH 06/10] dbghelp{dwarf}: handle errors in dwarf2_fill_attr by returning a boolean
Eric Pouech
eric.pouech at gmail.com
Sat Sep 11 03:59:18 CDT 2021
Signed-off-by: Eric Pouech <eric.pouech at gmail.com>
---
dlls/dbghelp/dwarf.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c
index 0de8e2116ae..14c1861b85a 100644
--- a/dlls/dbghelp/dwarf.c
+++ b/dlls/dbghelp/dwarf.c
@@ -509,7 +509,7 @@ static void dwarf2_swallow_attribute(dwarf2_traverse_context_t* ctx,
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 unsigned char* data,
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);
break;
}
+ return TRUE;
}
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)
{
- dwarf2_fill_attr(ctx, abbrev_attr, di->data[i], attr);
- return TRUE;
+ return dwarf2_fill_attr(ctx, abbrev_attr, di->data[i], attr);
}
if ((abbrev_attr->attribute == DW_AT_abstract_origin ||
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 ? */
- if (!ref_abbrev_attr) break;
- dwarf2_fill_attr(ctx, ref_abbrev_attr, di->data[refidx], attr);
+ if (!ref_abbrev_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)))
FIXME("Should have found the debug info entry\n");
}
More information about the wine-devel
mailing list