- Since the field precision operator used in the sprintf() uses
ints and not size_t's, replace it with two strncpy()s, which
use size_t's. (DLR)
+ - If the tab-completed path is a directory, make sure enough
+ space is allocated before tacking a slash onto the end of it.
+ (DLR)
- help.c:
parse_help_input()
- Add 'E' and 'e' as aliases for Exit, for consistency with the
mzero = charalloc(lastslash_len + common_len + 1);
- /*sprintf(mzero, "%.*s%.*s", lastslash_len, buf, common_len,
- matches[0]);*/
strncpy(mzero, buf, lastslash_len);
strncpy(mzero + lastslash_len, matches[0], common_len);
common_len += lastslash_len;
+ mzero[common_len] = '\0';
assert(common_len >= *place);
if (num_matches == 1 && is_dir(mzero)) {
- mzero[common_len] = '/';
common_len++;
+ mzero = charealloc(mzero, common_len + 1);
+ mzero[common_len - 1] = '/';
+ mzero[common_len] = '\0';
assert(common_len > *place);
}