/* If this location originally came from a linespec, save a string
representation of it for display and saving to file. */
if (state->is_linespec)
- {
- char *linespec = explicit_location_to_linespec (explicit_loc);
-
- set_event_location_string (canon, linespec);
- xfree (linespec);
- }
+ set_event_location_string (canon,
+ explicit_location_to_linespec (explicit_loc));
}
/* Given a line offset in LS, construct the relevant SALs. */
AS_LINESPEC is non-zero if this string should be a linespec.
Otherwise it will be output in explicit form. */
-static char *
+static gdb::unique_xmalloc_ptr<char>
explicit_to_string_internal (int as_linespec,
const struct explicit_location *explicit_loc)
{
explicit_loc->line_offset.offset);
}
- return xstrdup (buf.c_str ());
+ return make_unique_xstrdup (buf.c_str ());
}
/* See description in location.h. */
-char *
+static gdb::unique_xmalloc_ptr<char>
explicit_location_to_string (const struct explicit_location *explicit_loc)
{
return explicit_to_string_internal (0, explicit_loc);
/* See description in location.h. */
-char *
+gdb::unique_xmalloc_ptr<char>
explicit_location_to_linespec (const struct explicit_location *explicit_loc)
{
return explicit_to_string_internal (1, explicit_loc);
case EXPLICIT_LOCATION:
EL_STRING (location)
- = explicit_location_to_string (EL_EXPLICIT (location));
+ = explicit_location_to_string (EL_EXPLICIT (location)).release ();
break;
case PROBE_LOCATION:
void
set_event_location_string (struct event_location *location,
- const char *string)
+ gdb::unique_xmalloc_ptr<char> string)
{
xfree (EL_STRING (location));
- EL_STRING (location) = string == NULL ? NULL : xstrdup (string);
+ EL_STRING (location) = string.release ();
}
extern enum event_location_type
event_location_type (const struct event_location *);
-/* Return a malloc'd explicit string representation of the given
- explicit location. The location must already be canonicalized/valid. */
+/* Return a linespec string representation of the given explicit
+ location. The location must already be canonicalized/valid. */
-extern char *
- explicit_location_to_string (const struct explicit_location *explicit_loc);
-
-/* Return a malloc'd linespec string representation of the given
- explicit location. The location must already be canonicalized/valid. */
-
-extern char *
+extern gdb::unique_xmalloc_ptr<char>
explicit_location_to_linespec (const struct explicit_location *explicit_loc);
/* Return a string representation of the LOCATION.
extern void
set_event_location_string (struct event_location *location,
- const char *string);
+ gdb::unique_xmalloc_ptr<char> string);
#endif /* LOCATION_H */