mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 11:15:14 -07:00
Merge pull request #3322 from oni-link/fix.memory.leak.2
path.c: Fix memory leak in expand_wildcards().
This commit is contained in:
commit
b762e809e4
@ -4112,10 +4112,11 @@ void globpath(char_u *path, char_u *file, garray_T *ga, int expand_options)
|
||||
STRCAT(buf, file); // NOLINT
|
||||
|
||||
char_u **p;
|
||||
int num_p;
|
||||
if (ExpandFromContext(&xpc, buf, &num_p, &p,
|
||||
WILD_SILENT|expand_options) != FAIL && num_p > 0) {
|
||||
ExpandEscape(&xpc, buf, num_p, p, WILD_SILENT|expand_options);
|
||||
int num_p = 0;
|
||||
(void)ExpandFromContext(&xpc, buf, &num_p, &p,
|
||||
WILD_SILENT | expand_options);
|
||||
if (num_p > 0) {
|
||||
ExpandEscape(&xpc, buf, num_p, p, WILD_SILENT | expand_options);
|
||||
|
||||
// Concatenate new results to previous ones.
|
||||
ga_grow(ga, num_p);
|
||||
|
@ -1843,7 +1843,11 @@ char_u *path_shorten_fname(char_u *full_path, char_u *dir_name)
|
||||
/// @param[out] file Array of resulting files.
|
||||
/// @param[in] flags Flags passed to expand_wildcards().
|
||||
///
|
||||
/// @return OK or FAIL.
|
||||
/// @returns OK when *file is set to allocated array of matches
|
||||
/// and *num_file(can be zero) to the number of matches.
|
||||
/// If FAIL is returned, *num_file and *file are either
|
||||
/// unchanged or *num_file is set to 0 and *file is set
|
||||
/// to NULL or points to "".
|
||||
int expand_wildcards_eval(char_u **pat, int *num_file, char_u ***file,
|
||||
int flags)
|
||||
{
|
||||
@ -1882,9 +1886,8 @@ int expand_wildcards_eval(char_u **pat, int *num_file, char_u ***file,
|
||||
/// @param[out] file is pointer to array of pointers to matched file names.
|
||||
/// @param flags is a combination of EW_* flags.
|
||||
///
|
||||
/// @returns OK when some files were found. *num_file is set to the
|
||||
/// number of matches, *file to the allocated array of
|
||||
/// matches.
|
||||
/// @returns OK when *file is set to allocated array of matches
|
||||
/// and *num_file (can be zero) to the number of matches.
|
||||
/// If FAIL is returned, *num_file and *file are either
|
||||
/// unchanged or *num_file is set to 0 and *file is set to
|
||||
/// NULL or points to "".
|
||||
@ -1944,6 +1947,12 @@ int expand_wildcards(int num_pat, char_u **pat, int *num_file, char_u ***file,
|
||||
}
|
||||
}
|
||||
|
||||
// Free empty array of matches
|
||||
if (*num_file == 0) {
|
||||
xfree(*file);
|
||||
*file = NULL;
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user