This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Fix memory leaks in incpath.c
- From: Jakub Jelinek <jakub at redhat dot com>
- To: "Joseph S. Myers" <joseph at codesourcery dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Tue, 26 Feb 2013 22:22:28 +0100
- Subject: [PATCH] Fix memory leaks in incpath.c
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
Hi!
Another file with memory leaks.
Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
2013-02-26 Jakub Jelinek <jakub@redhat.com>
* incpath.c (add_standard_paths): Use reconcat instead of concat
where appropriate and avoid leaking memory.
--- gcc/incpath.c.jj 2013-01-11 09:02:35.000000000 +0100
+++ gcc/incpath.c 2013-02-26 15:11:23.676815551 +0100
@@ -149,12 +149,17 @@ add_standard_paths (const char *sysroot,
{
char *str = concat (iprefix, p->fname + len, NULL);
if (p->multilib == 1 && imultilib)
- str = concat (str, dir_separator_str, imultilib, NULL);
+ str = reconcat (str, str, dir_separator_str,
+ imultilib, NULL);
else if (p->multilib == 2)
{
if (!imultiarch)
- continue;
- str = concat (str, dir_separator_str, imultiarch, NULL);
+ {
+ free (str);
+ continue;
+ }
+ str = reconcat (str, str, dir_separator_str,
+ imultiarch, NULL);
}
add_path (str, SYSTEM, p->cxx_aware, false);
}
@@ -183,6 +188,7 @@ add_standard_paths (const char *sysroot,
&& !filename_ncmp (p->fname, cpp_PREFIX, cpp_PREFIX_len))
{
static const char *relocated_prefix;
+ char *ostr;
/* If this path starts with the configure-time prefix,
but the compiler has been relocated, replace it
with the run-time prefix. The run-time exec prefix
@@ -198,22 +204,27 @@ add_standard_paths (const char *sysroot,
= make_relative_prefix (dummy,
cpp_EXEC_PREFIX,
cpp_PREFIX);
+ free (dummy);
}
- str = concat (relocated_prefix,
- p->fname + cpp_PREFIX_len,
- NULL);
- str = update_path (str, p->component);
+ ostr = concat (relocated_prefix,
+ p->fname + cpp_PREFIX_len,
+ NULL);
+ str = update_path (ostr, p->component);
+ free (ostr);
}
else
str = update_path (p->fname, p->component);
if (p->multilib == 1 && imultilib)
- str = concat (str, dir_separator_str, imultilib, NULL);
+ str = reconcat (str, str, dir_separator_str, imultilib, NULL);
else if (p->multilib == 2)
{
if (!imultiarch)
- continue;
- str = concat (str, dir_separator_str, imultiarch, NULL);
+ {
+ free (str);
+ continue;
+ }
+ str = reconcat (str, str, dir_separator_str, imultiarch, NULL);
}
add_path (str, SYSTEM, p->cxx_aware, false);
Jakub