* [RFA] libiberty/make-relative-prefix.c, more resource leaks
@ 2007-08-09 22:28 msnyder
2007-08-17 19:04 ` msnyder
2007-08-17 19:31 ` DJ Delorie
0 siblings, 2 replies; 3+ messages in thread
From: msnyder @ 2007-08-09 22:28 UTC (permalink / raw)
To: gcc-patches, gdb-patches, binutils; +Cc: ian, dj, dberlin
[-- Attachment #1: Type: text/plain, Size: 189 bytes --]
Sorry, didn't get them all the first time.
If this is approved, would the approver please go ahead and
check it into gcc for me? I don't think I have permissions there.
Thanks,
Michael
[-- Attachment #2: 302b.txt --]
[-- Type: text/plain, Size: 4743 bytes --]
2007-08-09 Michael Snyder <msnyder@access-company.com>
* make-relative-prefix.c (make_relative_prefix_1): Resource leaks.
Index: make-relative-prefix.c
===================================================================
RCS file: /cvs/src/src/libiberty/make-relative-prefix.c,v
retrieving revision 1.10
diff -p -r1.10 make-relative-prefix.c
*** make-relative-prefix.c 3 Aug 2007 19:49:44 -0000 1.10
--- make-relative-prefix.c 9 Aug 2007 22:22:56 -0000
*************** free_split_directories (char **dirs)
*** 201,210 ****
{
int i = 0;
! while (dirs[i] != NULL)
! free (dirs[i++]);
! free ((char *) dirs);
}
/* Given three strings PROGNAME, BIN_PREFIX, PREFIX, return a string that gets
--- 201,213 ----
{
int i = 0;
! if (dirs != NULL)
! {
! while (dirs[i] != NULL)
! free (dirs[i++]);
! free ((char *) dirs);
! }
}
/* Given three strings PROGNAME, BIN_PREFIX, PREFIX, return a string that gets
*************** static char *
*** 221,231 ****
make_relative_prefix_1 (const char *progname, const char *bin_prefix,
const char *prefix, const int resolve_links)
{
! char **prog_dirs, **bin_dirs, **prefix_dirs;
int prog_num, bin_num, prefix_num;
int i, n, common;
int needed_len;
! char *ret, *ptr, *full_progname = NULL;
if (progname == NULL || bin_prefix == NULL || prefix == NULL)
return NULL;
--- 224,234 ----
make_relative_prefix_1 (const char *progname, const char *bin_prefix,
const char *prefix, const int resolve_links)
{
! char **prog_dirs = NULL, **bin_dirs = NULL, **prefix_dirs = NULL;
int prog_num, bin_num, prefix_num;
int i, n, common;
int needed_len;
! char *ret = NULL, *ptr, *full_progname;
if (progname == NULL || bin_prefix == NULL || prefix == NULL)
return NULL;
*************** make_relative_prefix_1 (const char *prog
*** 305,314 ****
bin_dirs = split_directories (bin_prefix, &bin_num);
if (bin_dirs == NULL)
! {
! free_split_directories (prog_dirs);
! return NULL;
! }
/* Remove the program name from comparison of directory names. */
prog_num--;
--- 308,314 ----
bin_dirs = split_directories (bin_prefix, &bin_num);
if (bin_dirs == NULL)
! goto bailout;
/* Remove the program name from comparison of directory names. */
prog_num--;
*************** make_relative_prefix_1 (const char *prog
*** 326,346 ****
}
if (prog_num <= 0 || i == bin_num)
! {
! free_split_directories (prog_dirs);
! free_split_directories (bin_dirs);
! prog_dirs = bin_dirs = (char **) 0;
! return NULL;
! }
}
prefix_dirs = split_directories (prefix, &prefix_num);
if (prefix_dirs == NULL)
! {
! free_split_directories (prog_dirs);
! free_split_directories (bin_dirs);
! return NULL;
! }
/* Find how many directories are in common between bin_prefix & prefix. */
n = (prefix_num < bin_num) ? prefix_num : bin_num;
--- 326,337 ----
}
if (prog_num <= 0 || i == bin_num)
! goto bailout;
}
prefix_dirs = split_directories (prefix, &prefix_num);
if (prefix_dirs == NULL)
! goto bailout;
/* Find how many directories are in common between bin_prefix & prefix. */
n = (prefix_num < bin_num) ? prefix_num : bin_num;
*************** make_relative_prefix_1 (const char *prog
*** 352,363 ****
/* If there are no common directories, there can be no relative prefix. */
if (common == 0)
! {
! free_split_directories (prog_dirs);
! free_split_directories (bin_dirs);
! free_split_directories (prefix_dirs);
! return NULL;
! }
/* Two passes: first figure out the size of the result string, and
then construct it. */
--- 343,349 ----
/* If there are no common directories, there can be no relative prefix. */
if (common == 0)
! goto bailout;
/* Two passes: first figure out the size of the result string, and
then construct it. */
*************** make_relative_prefix_1 (const char *prog
*** 371,377 ****
ret = (char *) malloc (needed_len);
if (ret == NULL)
! return NULL;
/* Build up the pathnames in argv[0]. */
*ret = '\0';
--- 357,363 ----
ret = (char *) malloc (needed_len);
if (ret == NULL)
! goto bailout;
/* Build up the pathnames in argv[0]. */
*ret = '\0';
*************** make_relative_prefix_1 (const char *prog
*** 392,397 ****
--- 378,384 ----
for (i = common; i < prefix_num; i++)
strcat (ret, prefix_dirs[i]);
+ bailout:
free_split_directories (prog_dirs);
free_split_directories (bin_dirs);
free_split_directories (prefix_dirs);
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFA] libiberty/make-relative-prefix.c, more resource leaks
2007-08-09 22:28 [RFA] libiberty/make-relative-prefix.c, more resource leaks msnyder
@ 2007-08-17 19:04 ` msnyder
2007-08-17 19:31 ` DJ Delorie
1 sibling, 0 replies; 3+ messages in thread
From: msnyder @ 2007-08-17 19:04 UTC (permalink / raw)
To: msnyder; +Cc: gcc-patches, gdb-patches, binutils, ian, dj, dberlin
> Sorry, didn't get them all the first time.
>
> If this is approved, would the approver please go ahead and
> check it into gcc for me? I don't think I have permissions there.
>
> Thanks,
> Michael
Ping?
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFA] libiberty/make-relative-prefix.c, more resource leaks
2007-08-09 22:28 [RFA] libiberty/make-relative-prefix.c, more resource leaks msnyder
2007-08-17 19:04 ` msnyder
@ 2007-08-17 19:31 ` DJ Delorie
1 sibling, 0 replies; 3+ messages in thread
From: DJ Delorie @ 2007-08-17 19:31 UTC (permalink / raw)
To: msnyder; +Cc: gcc-patches, gdb-patches, binutils, ian, dberlin
> If this is approved, would the approver please go ahead and
> check it into gcc for me? I don't think I have permissions there.
>
> * make-relative-prefix.c (make_relative_prefix_1): Resource leaks.
Committed.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2007-08-17 19:31 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-08-09 22:28 [RFA] libiberty/make-relative-prefix.c, more resource leaks msnyder
2007-08-17 19:04 ` msnyder
2007-08-17 19:31 ` DJ Delorie
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).