diff options
Diffstat (limited to 'lib/realloc.c')
| -rw-r--r-- | lib/realloc.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/lib/realloc.c b/lib/realloc.c index ccbf9913..fe948222 100644 --- a/lib/realloc.c +++ b/lib/realloc.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* Work around bug on some systems where realloc (NULL, 0) fails. | 1 | /* realloc() function that is glibc compatible. |
| 2 | Copyright (C) 1997, 2003 Free Software Foundation, Inc. | 2 | Copyright (C) 1997, 2003, 2004 Free Software Foundation, Inc. |
| 3 | 3 | ||
| 4 | This program is free software; you can redistribute it and/or modify | 4 | This program is free software; you can redistribute it and/or modify |
| 5 | it under the terms of the GNU General Public License as published by | 5 | it under the terms of the GNU General Public License as published by |
| @@ -13,11 +13,11 @@ | |||
| 13 | 13 | ||
| 14 | You should have received a copy of the GNU General Public License | 14 | You should have received a copy of the GNU General Public License |
| 15 | along with this program; if not, write to the Free Software Foundation, | 15 | along with this program; if not, write to the Free Software Foundation, |
| 16 | Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | 16 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ |
| 17 | 17 | ||
| 18 | /* written by Jim Meyering */ | 18 | /* written by Jim Meyering */ |
| 19 | 19 | ||
| 20 | #if HAVE_CONFIG_H | 20 | #ifdef HAVE_CONFIG_H |
| 21 | # include <config.h> | 21 | # include <config.h> |
| 22 | #endif | 22 | #endif |
| 23 | #undef realloc | 23 | #undef realloc |
| @@ -32,8 +32,15 @@ void * | |||
| 32 | rpl_realloc (void *p, size_t n) | 32 | rpl_realloc (void *p, size_t n) |
| 33 | { | 33 | { |
| 34 | if (n == 0) | 34 | if (n == 0) |
| 35 | n = 1; | 35 | { |
| 36 | if (p == 0) | 36 | n = 1; |
| 37 | |||
| 38 | /* In theory realloc might fail, so don't rely on it to free. */ | ||
| 39 | free (p); | ||
| 40 | p = NULL; | ||
| 41 | } | ||
| 42 | |||
| 43 | if (p == NULL) | ||
| 37 | return malloc (n); | 44 | return malloc (n); |
| 38 | return realloc (p, n); | 45 | return realloc (p, n); |
| 39 | } | 46 | } |
