summaryrefslogtreecommitdiff
path: root/libbacktrace
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2018-11-30 08:43:50 +0000
committerTom de Vries <vries@gcc.gnu.org>2018-11-30 08:43:50 +0000
commit518a3a2106e4e8172a1c7628b79b63635857fec3 (patch)
tree5127e6a5ff6c59421ad748b7e4dfb68d21a122d8 /libbacktrace
parent507bdfc5f6862052de0ff6d5043a24df380d4d45 (diff)
[libbacktrace] Factor out backtrace_vector_free
Factor out new function backtrace_vector_free. Bootstrapped and reg-tested on x86_64. 2018-11-30 Tom de Vries <tdevries@suse.de> * internal.h (backtrace_vector_free): New static inline fuction, factored out of ... * dwarf.c (read_line_info): ... here. From-SVN: r266658
Diffstat (limited to 'libbacktrace')
-rw-r--r--libbacktrace/ChangeLog6
-rw-r--r--libbacktrace/dwarf.c4
-rw-r--r--libbacktrace/internal.h12
3 files changed, 19 insertions, 3 deletions
diff --git a/libbacktrace/ChangeLog b/libbacktrace/ChangeLog
index 8894446a75b..9ea10f7e0d6 100644
--- a/libbacktrace/ChangeLog
+++ b/libbacktrace/ChangeLog
@@ -1,3 +1,9 @@
+2018-11-30 Tom de Vries <tdevries@suse.de>
+
+ * internal.h (backtrace_vector_free): New static inline fuction,
+ factored out of ...
+ * dwarf.c (read_line_info): ... here.
+
2018-11-28 Tom de Vries <tdevries@suse.de>
* dwarf.c (read_abbrevs): Fix handling of abbrevs->abbrevs allocation
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