mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06: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
|
STRCAT(buf, file); // NOLINT
|
||||||
|
|
||||||
char_u **p;
|
char_u **p;
|
||||||
int num_p;
|
int num_p = 0;
|
||||||
if (ExpandFromContext(&xpc, buf, &num_p, &p,
|
(void)ExpandFromContext(&xpc, buf, &num_p, &p,
|
||||||
WILD_SILENT|expand_options) != FAIL && num_p > 0) {
|
WILD_SILENT | expand_options);
|
||||||
ExpandEscape(&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.
|
// Concatenate new results to previous ones.
|
||||||
ga_grow(ga, num_p);
|
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[out] file Array of resulting files.
|
||||||
/// @param[in] flags Flags passed to expand_wildcards().
|
/// @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 expand_wildcards_eval(char_u **pat, int *num_file, char_u ***file,
|
||||||
int flags)
|
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[out] file is pointer to array of pointers to matched file names.
|
||||||
/// @param flags is a combination of EW_* flags.
|
/// @param flags is a combination of EW_* flags.
|
||||||
///
|
///
|
||||||
/// @returns OK when some files were found. *num_file is set to the
|
/// @returns OK when *file is set to allocated array of matches
|
||||||
/// number of matches, *file to the allocated array of
|
/// and *num_file (can be zero) to the number of matches.
|
||||||
/// matches.
|
|
||||||
/// If FAIL is returned, *num_file and *file are either
|
/// If FAIL is returned, *num_file and *file are either
|
||||||
/// unchanged or *num_file is set to 0 and *file is set to
|
/// unchanged or *num_file is set to 0 and *file is set to
|
||||||
/// NULL or points 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;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user