aboutsummaryrefslogtreecommitdiff
path: root/gdb/guile/scm-safe-call.c
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2018-05-26 23:26:39 -0600
committerTom Tromey <tom@tromey.com>2018-07-17 13:21:47 -0600
commita1a31cb8dce7d1bfa7878dc08c28af330ef2ed69 (patch)
tree7819771634fdc0ad4ef245800c3b354abf6382e4 /gdb/guile/scm-safe-call.c
parent15bf30027bcb167833a0ca2c619c03f177ef1ba4 (diff)
downloadgdb-a1a31cb8dce7d1bfa7878dc08c28af330ef2ed69.zip
gdb-a1a31cb8dce7d1bfa7878dc08c28af330ef2ed69.tar.gz
gdb-a1a31cb8dce7d1bfa7878dc08c28af330ef2ed69.tar.bz2
Return unique_xmalloc_ptr from gdbscm_safe_eval_string
This changes gdbscm_safe_eval_string to return a unique_xmalloc_ptr. This allows for the removal of some cleanups. It also fixes a potential latent memory leak in gdbscm_set_backtrace. gdb/ChangeLog 2018-07-17 Tom Tromey <tom@tromey.com> * guile/guile.c (gdbscm_eval_from_control_command): Update. * guile/guile-internal.h (gdbscm_safe_eval_string): Update. * guile/scm-objfile.c (gdbscm_execute_objfile_script): Update. * guile/scm-safe-call.c (gdbscm_safe_eval_string): Return unique_xmalloc_ptr.
Diffstat (limited to 'gdb/guile/scm-safe-call.c')
-rw-r--r--gdb/guile/scm-safe-call.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/gdb/guile/scm-safe-call.c b/gdb/guile/scm-safe-call.c
index 2cba399..63c4833 100644
--- a/gdb/guile/scm-safe-call.c
+++ b/gdb/guile/scm-safe-call.c
@@ -393,9 +393,9 @@ scscm_eval_scheme_string (void *datap)
and preventing continuation capture.
The result is NULL if no exception occurred. Otherwise, the exception is
printed according to "set guile print-stack" and the result is an error
- message allocated with malloc, caller must free. */
+ message. */
-char *
+gdb::unique_xmalloc_ptr<char>
gdbscm_safe_eval_string (const char *string, int display_result)
{
struct eval_scheme_string_data data = { string, display_result };
@@ -404,7 +404,7 @@ gdbscm_safe_eval_string (const char *string, int display_result)
result = gdbscm_with_guile (scscm_eval_scheme_string, (void *) &data);
if (result != NULL)
- return xstrdup (result);
+ return gdb::unique_xmalloc_ptr<char> (xstrdup (result));
return NULL;
}