summaryrefslogtreecommitdiff
path: root/implicit.c
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2006-02-21 05:21:19 +0000
committerPaul Smith <psmith@gnu.org>2006-02-21 05:21:19 +0000
commita179091273e3a786c6fccd2ebd318e846af1475a (patch)
tree1610e1b28335c7dc70b523f5442366b127f00837 /implicit.c
parent709cce940b5a74157d4a721acaa585f3c1f24026 (diff)
downloadmake-a179091273e3a786c6fccd2ebd318e846af1475a.tar.gz
Fix a potential core dump when merging aliases. Might fix bug #15818.
Revert intermediate file free code. Suppress some warnings in VMS builds.
Diffstat (limited to 'implicit.c')
-rw-r--r--implicit.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/implicit.c b/implicit.c
index 054b71a5..b8f1054c 100644
--- a/implicit.c
+++ b/implicit.c
@@ -80,19 +80,21 @@ static void
free_idep_chain (struct idep *p)
{
struct idep *n;
- struct file *f;
for (; p != 0; p = n)
{
n = p->next;
if (p->name)
- free (p->name);
+ {
+ struct file *f = p->intermediate_file;
+
+ if (f != 0
+ && (f->stem < f->name || f->stem > f->name + strlen (f->name)))
+ free (f->stem);
- f = p->intermediate_file;
- if (f != 0
- && (f->stem < f->name || f->stem > f->name + strlen (f->name)))
- free (f->stem);
+ free (p->name);
+ }
free (p);
}
@@ -836,7 +838,7 @@ pattern_search (struct file *file, int archive,
f->deps = imf->deps;
f->cmds = imf->cmds;
- f->stem = xstrdup (imf->stem);
+ f->stem = imf->stem;
f->also_make = imf->also_make;
f->is_target = 1;