{
/* 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 ("");
|| 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. */
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 */