diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2012-08-29 01:02:41 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2012-08-29 01:02:41 +0000 |
commit | b9b64803f63e7ae3489d9fa0ade86bc83c61e44a (patch) | |
tree | 584daf5b12432f4f2e2d52cd0cc6481ae309943a | |
parent | bf8247ff45fff9e0b9502c05457f42a32ec5bd8b (diff) | |
download | gdb-b9b64803f63e7ae3489d9fa0ade86bc83c61e44a.zip gdb-b9b64803f63e7ae3489d9fa0ade86bc83c61e44a.tar.gz gdb-b9b64803f63e7ae3489d9fa0ade86bc83c61e44a.tar.bz2 |
Replace malloc with xmalloc
* argv.c (dupargv): Replace malloc with xmalloc. Don't check
xmalloc return.
(buildargv): Likewise. Also replace strdup with xstrdup.
(expandargv): Don't check dupargv return.
-rw-r--r-- | libiberty/ChangeLog | 7 | ||||
-rw-r--r-- | libiberty/argv.c | 47 |
2 files changed, 16 insertions, 38 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index f06dcb5..9afed43 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,5 +1,12 @@ 2011-08-28 H.J. Lu <hongjiu.lu@intel.com> + * argv.c (dupargv): Replace malloc with xmalloc. Don't check + xmalloc return. + (buildargv): Likewise. Also replace strdup with xstrdup. + (expandargv): Don't check dupargv return. + +2011-08-28 H.J. Lu <hongjiu.lu@intel.com> + PR binutils/14526 * argv.c (buildargv): Replace alloca with xmalloc/free. diff --git a/libiberty/argv.c b/libiberty/argv.c index 4cef3bc..f2727e8 100644 --- a/libiberty/argv.c +++ b/libiberty/argv.c @@ -1,5 +1,5 @@ /* Create and destroy argument vectors (argv's) - Copyright (C) 1992, 2001, 2010 Free Software Foundation, Inc. + Copyright (C) 1992, 2001, 2010, 2012 Free Software Foundation, Inc. Written by Fred Fish @ Cygnus Support This file is part of the libiberty library. @@ -72,20 +72,13 @@ dupargv (char **argv) /* the vector */ for (argc = 0; argv[argc] != NULL; argc++); - copy = (char **) malloc ((argc + 1) * sizeof (char *)); - if (copy == NULL) - return NULL; - + copy = (char **) xmalloc ((argc + 1) * sizeof (char *)); + /* the strings */ for (argc = 0; argv[argc] != NULL; argc++) { int len = strlen (argv[argc]); - copy[argc] = (char *) malloc (len + 1); - if (copy[argc] == NULL) - { - freeargv (copy); - return NULL; - } + copy[argc] = (char *) xmalloc (len + 1); strcpy (copy[argc], argv[argc]); } copy[argc] = NULL; @@ -149,7 +142,7 @@ remains unchanged. The last element of the vector is followed by a @code{NULL} element. All of the memory for the pointer array and copies of the string -is obtained from @code{malloc}. All of the memory can be returned to the +is obtained from @code{xmalloc}. All of the memory can be returned to the system with the single function call @code{freeargv}, which takes the returned result of @code{buildargv}, as it's argument. @@ -205,21 +198,12 @@ char **buildargv (const char *input) if (argv == NULL) { maxargc = INITIAL_MAXARGC; - nargv = (char **) malloc (maxargc * sizeof (char *)); + nargv = (char **) xmalloc (maxargc * sizeof (char *)); } else { maxargc *= 2; - nargv = (char **) realloc (argv, maxargc * sizeof (char *)); - } - if (nargv == NULL) - { - if (argv != NULL) - { - freeargv (argv); - argv = NULL; - } - break; + nargv = (char **) xrealloc (argv, maxargc * sizeof (char *)); } argv = nargv; argv[argc] = NULL; @@ -284,13 +268,7 @@ char **buildargv (const char *input) } } *arg = EOS; - argv[argc] = strdup (copybuf); - if (argv[argc] == NULL) - { - freeargv (argv); - argv = NULL; - break; - } + argv[argc] = xstrdup (copybuf); argc++; argv[argc] = NULL; @@ -457,14 +435,7 @@ expandargv (int *argcp, char ***argvp) file_argv = buildargv (buffer); /* If *ARGVP is not already dynamically allocated, copy it. */ if (!argv_dynamic) - { - *argvp = dupargv (*argvp); - if (!*argvp) - { - fputs ("\nout of memory\n", stderr); - xexit (1); - } - } + *argvp = dupargv (*argvp); /* Count the number of arguments. */ file_argc = 0; while (file_argv[file_argc]) |