Introduce make_unique_xstrndup
This adds a new make_unique_xstrndup function, which is the "n" analogue of make_unique_xstrdup. It also updates a couple existing places to use this function.
This commit is contained in:
parent
8a89ddbda2
commit
be77dd73c7
3 changed files with 14 additions and 5 deletions
|
@ -375,14 +375,13 @@ do_set_command (const char *arg, int from_tty, struct cmd_list_element *c)
|
|||
{
|
||||
/* Clear trailing whitespace of filename. */
|
||||
const char *ptr = arg + strlen (arg) - 1;
|
||||
char *copy;
|
||||
|
||||
while (ptr >= arg && (*ptr == ' ' || *ptr == '\t'))
|
||||
ptr--;
|
||||
copy = xstrndup (arg, ptr + 1 - arg);
|
||||
gdb::unique_xmalloc_ptr<char> copy
|
||||
= make_unique_xstrndup (arg, ptr + 1 - arg);
|
||||
|
||||
val = tilde_expand (copy);
|
||||
xfree (copy);
|
||||
val = tilde_expand (copy.get ());
|
||||
}
|
||||
else
|
||||
val = xstrdup ("");
|
||||
|
|
|
@ -199,7 +199,8 @@ parser_state::mark_completion_tag (enum type_code tag, const char *ptr,
|
|||
|| tag == TYPE_CODE_STRUCT
|
||||
|| tag == TYPE_CODE_ENUM);
|
||||
m_completion_state.expout_tag_completion_type = tag;
|
||||
m_completion_state.expout_completion_name.reset (xstrndup (ptr, length));
|
||||
m_completion_state.expout_completion_name
|
||||
= make_unique_xstrndup (ptr, length);
|
||||
}
|
||||
|
||||
/* See parser-defs.h. */
|
||||
|
|
|
@ -64,4 +64,13 @@ make_unique_xstrdup (const char *str)
|
|||
return gdb::unique_xmalloc_ptr<char> (xstrdup (str));
|
||||
}
|
||||
|
||||
/* Dup the first N characters of STR and return a unique_xmalloc_ptr
|
||||
for the result. The result is always \0-terminated. */
|
||||
|
||||
static inline gdb::unique_xmalloc_ptr<char>
|
||||
make_unique_xstrndup (const char *str, size_t n)
|
||||
{
|
||||
return gdb::unique_xmalloc_ptr<char> (xstrndup (str, n));
|
||||
}
|
||||
|
||||
#endif /* COMMON_GDB_UNIQUE_PTR_H */
|
||||
|
|
Loading…
Add table
Reference in a new issue