diff options
author | Tom Tromey <tom@tromey.com> | 2022-01-14 07:24:18 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2022-01-18 10:00:00 -0700 |
commit | dab863ef408588aba1c396901e3e5070948d2047 (patch) | |
tree | 9ce96ef1d6d47d125ba54fd3d235f4d41d2eb281 | |
parent | e53c95d40b128a1e794b27ec8b166ae1445356eb (diff) | |
download | gdb-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.c | 8 | ||||
-rw-r--r-- | gdb/location.c | 14 | ||||
-rw-r--r-- | gdb/location.h | 14 |
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 */ |