- Use specific free_*() calls where appropriate.
2009-09-26 Paul Smith <psmith@gnu.org>
+ * read.c (record_files): Use free_ns() to free struct nameseq.
+ (eval): Ditto.
+
+ * rule.c (freerule): Use free_dep_chain().
+
* read.c (record_files): Free FILENAMES chain for implicit rules.
+ (eval): Static pattern targets go into the string cache.
* function.c (string_glob): Free NAME in the nameseq chain.
#define dep_name(d) ((d)->name == 0 ? (d)->file->name : (d)->name)
#define alloc_dep() (xcalloc (sizeof (struct dep)))
-#define free_dep(_d) free (_d)
+#define free_ns(_n) free (_n)
+#define free_dep(_d) free_ns (_d)
struct dep *copy_dep_chain (const struct dep *d);
void free_dep_chain (struct dep *d);
const char *name = files->name;
int r;
- free (files);
+ free_ns (files);
files = next;
r = eval_makefile (name,
{
struct nameseq *target;
target = PARSE_FILE_SEQ (&p2, struct nameseq, ':', NULL,
- PARSEFS_NOGLOB|PARSEFS_NOCACHE);
+ PARSEFS_NOGLOB);
++p2;
if (target == 0)
fatal (fstart, _("missing target pattern"));
pattern = target->name;
if (pattern_percent == 0)
fatal (fstart, _("target pattern contains no `%%'"));
- free (target);
+ free_ns (target);
}
else
pattern = 0;
struct pattern_var *p;
nextf = filenames->next;
- free (filenames);
+ free_ns (filenames);
/* If it's a pattern target, then add it to the pattern-specific
variable list. */
/* Count the targets to create an array of target names.
We already have the first one. */
nextf = filenames->next;
- free (filenames);
+ free_ns (filenames);
filenames = nextf;
for (c = 1; nextf; ++c, nextf = nextf->next)
++c;
nextf = filenames->next;
- free (filenames);
+ free_ns (filenames);
filenames = nextf;
}
struct file *f;
struct dep *this = 0;
- free (filenames);
+ free_ns (filenames);
/* Check for special targets. Do it here instead of, say, snap_deps()
so that we can immediately use the value. */
freerule (struct rule *rule, struct rule *lastrule)
{
struct rule *next = rule->next;
- struct dep *dep;
- dep = rule->deps;
- while (dep)
- {
- struct dep *t = dep->next;
- free_dep (dep);
- dep = t;
- }
+ free_dep_chain (rule->deps);
free (rule->targets);
free (rule->suffixes);