projects
/
debian
/
gzip
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
oops, missed another SIGPIPE
[debian/gzip]
/
lib
/
xmalloc.c
diff --git
a/lib/xmalloc.c
b/lib/xmalloc.c
index 585fb4b1e860c27f5140d60c9847a0f8e8beab53..3b5f86cdca11571c5326d9833d3597413e3e4425 100644
(file)
--- a/
lib/xmalloc.c
+++ b/
lib/xmalloc.c
@@
-1,8
+1,6
@@
/* xmalloc.c -- malloc with out of memory checking
/* xmalloc.c -- malloc with out of memory checking
- Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2008-2009 Free Software Foundation,
- Inc.
+ Copyright (C) 1990-2000, 2002-2006, 2008-2012 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@
-30,8
+28,8
@@
/* 1 if calloc is known to be compatible with GNU calloc. This
matters if we are not also using the calloc module, which defines
/* 1 if calloc is known to be compatible with GNU calloc. This
matters if we are not also using the calloc module, which defines
- HAVE_CALLOC and supports the GNU API even on non-GNU platforms. */
-#if defined HAVE_CALLOC
|| defined __GLIBC__
+ HAVE_CALLOC
_GNU
and supports the GNU API even on non-GNU platforms. */
+#if defined HAVE_CALLOC
_GNU || (defined __GLIBC__ && !defined __UCLIBC__)
enum { HAVE_GNU_CALLOC = 1 };
#else
enum { HAVE_GNU_CALLOC = 0 };
enum { HAVE_GNU_CALLOC = 1 };
#else
enum { HAVE_GNU_CALLOC = 0 };
@@
-54,8
+52,16
@@
xmalloc (size_t n)
void *
xrealloc (void *p, size_t n)
{
void *
xrealloc (void *p, size_t n)
{
+ if (!n && p)
+ {
+ /* The GNU and C99 realloc behaviors disagree here. Act like
+ GNU, even if the underlying realloc is C99. */
+ free (p);
+ return NULL;
+ }
+
p = realloc (p, n);
p = realloc (p, n);
- if (!p && n
!= 0
)
+ if (!p && n)
xalloc_die ();
return p;
}
xalloc_die ();
return p;
}