Eliminate remaining gdb/guile cleanups

The remaining gdb/guile cleanups all handle the memory returned by
gdbscm_scm_to_c_string.

This commit makes gdbscm_scm_to_c_string return a
gdb::unique_xmalloc_ptr instead of a naked pointer, and eliminates the
remaining cleanups.

gdb/ChangeLog:
2018-07-19  Pedro Alves  <palves@redhat.com>

	* guile/guile-internal.h (gdbscm_scm_to_c_string): Now returns a
	gdb::unique_xmalloc_ptr.
	* guile/scm-breakpoint.c (gdbscm_set_breakpoint_condition_x):
	Adjust to use dbscm_wrap and gdb::unique_xmalloc_ptr.
	* guile/scm-exception.c (gdbscm_exception_message_to_string): Use
	copy-initialization.
	* guile/scm-pretty-print.c (ppscm_print_children): Use
	gdb::unique_xmalloc_ptr instead of cleanups.
	(gdbscm_apply_val_pretty_printer): Remove cleanups.
	* guile/scm-string.c (gdbscm_scm_to_c_string): Now returns a
	gdb::unique_xmalloc_ptr.
	* guile/scm-type.c (gdbscm_type_field, gdbscm_type_has_field_p):
	Adjust to use gdb::unique_xmalloc_ptr.
	* guile/scm-utils.c (extract_arg): Adjust.
	* guile/scm-value.c (gdbscm_value_field): Adjust to use
	gdb::unique_xmalloc_ptr instead of a cleanup.
This commit is contained in:
Pedro Alves
2018-07-19 16:34:55 +01:00
parent 4581dc8297
commit 4c6933327e
9 changed files with 62 additions and 80 deletions

View File

@@ -619,20 +619,14 @@ gdbscm_value_field (SCM self, SCM field_scm)
{
scoped_value_mark free_values;
char *field = gdbscm_scm_to_c_string (field_scm);
struct cleanup *cleanups = make_cleanup (xfree, field);
gdb::unique_xmalloc_ptr<char> field = gdbscm_scm_to_c_string (field_scm);
struct value *tmp = v_smob->value;
struct value *res_val = value_struct_elt (&tmp, NULL, field, NULL,
struct value *res_val = value_struct_elt (&tmp, NULL, field.get (), NULL,
"struct/class/union");
SCM result = vlscm_scm_from_value (res_val);
do_cleanups (cleanups);
return result;
return vlscm_scm_from_value (res_val);
});
}