[libbacktrace] Factor out backtrace_vector_free Factor out new function backtrace_vector_free. Bootstrapped and reg-tested on x86_64. 2018-11-28 Tom de Vries * internal.h (backtrace_vector_free): New static inline fuction, factored out of ... * dwarf.c (read_line_info): ... here. --- libbacktrace/dwarf.c | 4 +--- libbacktrace/internal.h | 12 ++++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/libbacktrace/dwarf.c b/libbacktrace/dwarf.c index 34543747c8f..48ef3638a5f 100644 --- a/libbacktrace/dwarf.c +++ b/libbacktrace/dwarf.c @@ -2057,9 +2057,7 @@ read_line_info (struct backtrace_state *state, struct dwarf_data *ddata, return 1; fail: - vec.vec.alc += vec.vec.size; - vec.vec.size = 0; - backtrace_vector_release (state, &vec.vec, error_callback, data); + backtrace_vector_free (state, &vec.vec, error_callback, data); free_line_header (state, hdr, error_callback, data); *lines = (struct line *) (uintptr_t) -1; *lines_count = 0; diff --git a/libbacktrace/internal.h b/libbacktrace/internal.h index bff8ed470e4..548f9d70905 100644 --- a/libbacktrace/internal.h +++ b/libbacktrace/internal.h @@ -257,6 +257,18 @@ extern int backtrace_vector_release (struct backtrace_state *state, backtrace_error_callback error_callback, void *data); +/* Free the space managed by VEC. This will reset VEC. */ + +static inline void +backtrace_vector_free (struct backtrace_state *state, + struct backtrace_vector *vec, + backtrace_error_callback error_callback, void *data) +{ + vec->alc += vec->size; + vec->size = 0; + backtrace_vector_release (state, vec, error_callback, data); +} + /* Read initial debug data from a descriptor, and set the fileline_data, syminfo_fn, and syminfo_data fields of STATE. Return the fileln_fn field in *FILELN_FN--this is done this way so