mirror of
https://salsa.debian.org/srivasta/make-dfsg.git
synced 2024-12-29 00:05:59 +00:00
Fix some memory leaks, found with valgrind.
This commit is contained in:
parent
48045f99e5
commit
44ac2cdb4d
3 changed files with 23 additions and 5 deletions
|
@ -1,3 +1,9 @@
|
|||
2009-09-26 Paul Smith <psmith@gnu.org>
|
||||
|
||||
* read.c (record_files): Free FILENAMES chain for implicit rules.
|
||||
|
||||
* function.c (string_glob): Free NAME in the nameseq chain.
|
||||
|
||||
2009-09-25 Boris Kolpackov <boris@codesynthesis.com>
|
||||
|
||||
* implicit.c (pattern_search): Terminate early if we haven't
|
||||
|
|
|
@ -382,6 +382,7 @@ string_glob (char *line)
|
|||
idx += len;
|
||||
result[idx++] = ' ';
|
||||
|
||||
free (chain->name);
|
||||
free (chain);
|
||||
chain = next;
|
||||
}
|
||||
|
|
21
read.c
21
read.c
|
@ -566,8 +566,8 @@ eval (struct ebuffer *ebuf, int set_default)
|
|||
record_files (filenames, pattern, pattern_percent, depstr, \
|
||||
cmds_started, commands, commands_idx, two_colon, \
|
||||
&fi); \
|
||||
filenames = 0; \
|
||||
} \
|
||||
filenames = 0; \
|
||||
commands_idx = 0; \
|
||||
no_targets = 0; \
|
||||
pattern = 0; \
|
||||
|
@ -1935,8 +1935,13 @@ record_files (struct nameseq *filenames, const char *pattern,
|
|||
if (pattern != 0)
|
||||
fatal (flocp, _("mixed implicit and static pattern rules"));
|
||||
|
||||
/* Create an array of target names */
|
||||
for (c = 1, nextf = filenames->next; nextf; ++c, nextf = nextf->next)
|
||||
/* Count the targets to create an array of target names.
|
||||
We already have the first one. */
|
||||
nextf = filenames->next;
|
||||
free (filenames);
|
||||
filenames = nextf;
|
||||
|
||||
for (c = 1; nextf; ++c, nextf = nextf->next)
|
||||
;
|
||||
targets = xmalloc (c * sizeof (const char *));
|
||||
target_pats = xmalloc (c * sizeof (const char *));
|
||||
|
@ -1944,9 +1949,10 @@ record_files (struct nameseq *filenames, const char *pattern,
|
|||
targets[0] = name;
|
||||
target_pats[0] = implicit_percent;
|
||||
|
||||
for (c = 1, nextf = filenames->next; nextf; ++c, nextf = nextf->next)
|
||||
c = 1;
|
||||
while (filenames)
|
||||
{
|
||||
name = nextf->name;
|
||||
name = filenames->name;
|
||||
implicit_percent = find_percent_cached (&name);
|
||||
|
||||
if (implicit_percent == 0)
|
||||
|
@ -1954,6 +1960,11 @@ record_files (struct nameseq *filenames, const char *pattern,
|
|||
|
||||
targets[c] = name;
|
||||
target_pats[c] = implicit_percent;
|
||||
++c;
|
||||
|
||||
nextf = filenames->next;
|
||||
free (filenames);
|
||||
filenames = nextf;
|
||||
}
|
||||
|
||||
create_pattern_rule (targets, target_pats, c, two_colon, deps, cmds, 1);
|
||||
|
|
Loading…
Reference in a new issue