aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2022-01-14 07:24:18 -0700
committerTom Tromey <tom@tromey.com>2022-01-18 10:00:00 -0700
commitdab863ef408588aba1c396901e3e5070948d2047 (patch)
tree9ce96ef1d6d47d125ba54fd3d235f4d41d2eb281
parente53c95d40b128a1e794b27ec8b166ae1445356eb (diff)
downloadgdb-dab863ef408588aba1c396901e3e5070948d2047.zip
gdb-dab863ef408588aba1c396901e3e5070948d2047.tar.gz
gdb-dab863ef408588aba1c396901e3e5070948d2047.tar.bz2
Remove a use of xfree in location.c
This small cleanup removes a use of xfree from location.c, by switching to unique_xmalloc_ptr. One function is only used in location.c, so it is made static. And, another function is changed to avoid a copy.
-rw-r--r--gdb/linespec.c8
-rw-r--r--gdb/location.c14
-rw-r--r--gdb/location.h14
3 files changed, 13 insertions, 23 deletions
diff --git a/gdb/linespec.c b/gdb/linespec.c
index eb911cc..b24cf30 100644
--- a/gdb/linespec.c
+++ b/gdb/linespec.c
@@ -2098,12 +2098,8 @@ canonicalize_linespec (struct linespec_state *state, const linespec *ls)
/* 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. */
diff --git a/gdb/location.c b/gdb/location.c
index 45f1d59..d4180cf 100644
--- a/gdb/location.c
+++ b/gdb/location.c
@@ -231,7 +231,7 @@ get_explicit_location_const (const struct event_location *location)
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)
{
@@ -282,12 +282,12 @@ explicit_to_string_internal (int as_linespec,
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);
@@ -295,7 +295,7 @@ explicit_location_to_string (const struct explicit_location *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);
@@ -425,7 +425,7 @@ event_location_to_string (struct event_location *location)
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:
@@ -981,8 +981,8 @@ event_location_empty_p (const struct event_location *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 ();
}
diff --git a/gdb/location.h b/gdb/location.h
index c6e1402..b391ce3 100644
--- a/gdb/location.h
+++ b/gdb/location.h
@@ -109,16 +109,10 @@ struct explicit_location
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.
@@ -286,6 +280,6 @@ extern int event_location_empty_p (const struct event_location *location);
extern void
set_event_location_string (struct event_location *location,
- const char *string);
+ gdb::unique_xmalloc_ptr<char> string);
#endif /* LOCATION_H */