]> git.ipfire.org Git - thirdparty/make.git/commitdiff
- Add static pattern targets to the string cache.
authorPaul Smith <psmith@gnu.org>
Sun, 27 Sep 2009 02:15:36 +0000 (02:15 +0000)
committerPaul Smith <psmith@gnu.org>
Sun, 27 Sep 2009 02:15:36 +0000 (02:15 +0000)
- Use specific free_*() calls where appropriate.

ChangeLog
dep.h
read.c
rule.c

index 66ce7f3c740202c38b2421baf5f397d27afbf94f..02b646b57212aaeb735fb596823ecb2e92723efb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,12 @@
 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.
 
diff --git a/dep.h b/dep.h
index eda021171f2a739ca83f5adead7da1dbd714109a..305fb894fa25569cf1b6d9d93747aeefcb3754a0 100644 (file)
--- a/dep.h
+++ b/dep.h
@@ -80,7 +80,8 @@ struct nameseq *ar_glob (const char *arname, const char *member_pattern, unsigne
 #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);
diff --git a/read.c b/read.c
index 55b26e8c79dcd6fd73a1ba4a3f8d8e354420d3bd..2eb98fa1c9c68376248f0a676003cfd9904e87aa 100644 (file)
--- a/read.c
+++ b/read.c
@@ -852,7 +852,7 @@ eval (struct ebuffer *ebuf, int set_default)
              const char *name = files->name;
               int r;
 
-             free (files);
+             free_ns (files);
              files = next;
 
               r = eval_makefile (name,
@@ -1142,7 +1142,7 @@ eval (struct ebuffer *ebuf, int set_default)
           {
             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"));
@@ -1152,7 +1152,7 @@ eval (struct ebuffer *ebuf, int set_default)
             pattern = target->name;
             if (pattern_percent == 0)
               fatal (fstart, _("target pattern contains no `%%'"));
-            free (target);
+            free_ns (target);
           }
         else
           pattern = 0;
@@ -1779,7 +1779,7 @@ record_target_var (struct nameseq *filenames, char *defn,
       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.  */
@@ -1938,7 +1938,7 @@ record_files (struct nameseq *filenames, const char *pattern,
       /* 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)
@@ -1963,7 +1963,7 @@ record_files (struct nameseq *filenames, const char *pattern,
           ++c;
 
           nextf = filenames->next;
-          free (filenames);
+          free_ns (filenames);
           filenames = nextf;
         }
 
@@ -1981,7 +1981,7 @@ record_files (struct nameseq *filenames, const char *pattern,
       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.  */
diff --git a/rule.c b/rule.c
index 8311fb6ba3c940eb8cd27077133031c8d720750d..a6928dfdb1e8c0a5c62b5dc7783daefc57ee521c 100644 (file)
--- a/rule.c
+++ b/rule.c
@@ -401,15 +401,8 @@ static void
 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);