]> sjero.net Git - wget/blobdiff - src/xmalloc.c
[svn] Merge of fix for bugs 20341 and 20410.
[wget] / src / xmalloc.c
index 75112c6b2b1aed76f9652076b92124a7b2dc7f2c..427eefa8895222a0b836e32ecda5a6a28812d5ec 100644 (file)
@@ -1,12 +1,12 @@
 /* Wrappers around malloc and memory debugging support.
-   Copyright (C) 2005 Free Software Foundation, Inc.
+   Copyright (C) 2003-2006 Free Software Foundation, Inc.
 
 This file is part of GNU Wget.
 
 GNU Wget is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
 
 GNU Wget is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -14,8 +14,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
-along with Wget; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+along with Wget.  If not, see <http://www.gnu.org/licenses/>.
 
 In addition, as a special exception, the Free Software Foundation
 gives permission to link the code of its release of Wget with the
@@ -31,12 +30,7 @@ so, delete this exception statement from your version.  */
 
 #include <stdio.h>
 #include <stdlib.h>
-#ifdef HAVE_STRING_H
-# include <string.h>
-#else  /* not HAVE_STRING_H */
-# include <strings.h>
-#endif /* not HAVE_STRING_H */
-#include <sys/types.h>
+#include <string.h>
 #include <errno.h>
 #include <assert.h>
 
@@ -44,10 +38,6 @@ so, delete this exception statement from your version.  */
 #include "xmalloc.h"
 #include "hash.h"              /* for hash_pointer */
 
-#ifndef errno
-extern int errno;
-#endif
-
 /* This file implements several wrappers around the basic allocation
    routines.  This is done for two reasons: first, so that the callers
    of these functions need not check for errors, which is easy to
@@ -67,7 +57,7 @@ memfatal (const char *context, long attempted_size)
 {
   /* Make sure we don't try to store part of the log line, and thus
      call malloc.  */
-  log_set_save_context (0);
+  log_set_save_context (false);
   logprintf (LOG_ALWAYS,
             _("%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"),
             exec_name, context, attempted_size);
@@ -261,15 +251,15 @@ register_ptr (const void *ptr, const char *file, int line)
   malloc_table[i].line = line;
 }
 
-/* Unregister PTR from malloc_table.  Return 0 if PTR is not present
-   in malloc_table.  */
+/* Unregister PTR from malloc_table.  Return false if PTR is not
+   present in malloc_table.  */
 
-static int
+static bool
 unregister_ptr (void *ptr)
 {
   int i = ptr_position (ptr);
   if (malloc_table[i].ptr == NULL)
-    return 0;
+    return false;
   malloc_table[i].ptr = NULL;
 
   /* Relocate malloc_table entries immediately following PTR. */
@@ -288,7 +278,7 @@ unregister_ptr (void *ptr)
     cont_outer:
       ;
     }
-  return 1;
+  return true;
 }
 
 /* Print the malloc debug stats gathered from the above information.
@@ -304,8 +294,7 @@ print_malloc_debug_stats (void)
          malloc_count, free_count, malloc_count - free_count);
   for (i = 0; i < SZ; i++)
     if (malloc_table[i].ptr != NULL)
-      printf ("0x%0*lx: %s:%d\n", 2 * sizeof (void *),
-             (long) malloc_table[i].ptr,
+      printf ("0x%0*lx: %s:%d\n", PTR_FORMAT (malloc_table[i].ptr),
              malloc_table[i].file, malloc_table[i].line);
 }
 
@@ -367,9 +356,8 @@ debugging_free (void *ptr, const char *source_file, int source_line)
     }
   if (!unregister_ptr (ptr))
     {
-      fprintf (stderr, "%s: bad xfree(%0*lx) at %s:%d\n",
-              exec_name, 2 * sizeof (void *), (long) ptr,
-              source_file, source_line);
+      fprintf (stderr, "%s: bad xfree(0x%0*lx) at %s:%d\n",
+              exec_name, PTR_FORMAT (ptr), source_file, source_line);
       abort ();
     }
   ++free_count;