From a2a86641b76dfd5606606d5a49fa64c20f0d9245 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 5 Oct 2018 14:09:07 +0000 Subject: [PATCH] re PR libbacktrace/87529 (libbacktrace API forces users to have memory leaks) PR libbacktrace/87529 * backtrace.h: Document that backtrace_create_state should be called only once. From-SVN: r264871 --- libbacktrace/ChangeLog | 6 ++++++ libbacktrace/backtrace.h | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/libbacktrace/ChangeLog b/libbacktrace/ChangeLog index ea43f145c3d..75745aa1796 100644 --- a/libbacktrace/ChangeLog +++ b/libbacktrace/ChangeLog @@ -1,3 +1,9 @@ +2018-10-05 Ian Lance Taylor + + PR libbacktrace/87529 + * backtrace.h: Document that backtrace_create_state should be + called only once. + 2018-08-05 Iain Buclaw * configure.ac: Move define of HAVE_ZLIB into check for -lz. diff --git a/libbacktrace/backtrace.h b/libbacktrace/backtrace.h index f07fa6c585e..83439ffadce 100644 --- a/libbacktrace/backtrace.h +++ b/libbacktrace/backtrace.h @@ -92,7 +92,13 @@ typedef void (*backtrace_error_callback) (void *data, const char *msg, use appropriate atomic operations. If THREADED is zero the state may only be accessed by one thread at a time. This returns a state pointer on success, NULL on error. If an error occurs, this will - call the ERROR_CALLBACK routine. */ + call the ERROR_CALLBACK routine. + + Calling this function allocates resources that can not be freed. + There is no backtrace_free_state function. The state is used to + cache information that is expensive to recompute. Programs are + expected to call this function at most once and to save the return + value for all later calls to backtrace functions. */ extern struct backtrace_state *backtrace_create_state ( const char *filename, int threaded, -- 2.30.2