rpmio/rpmmalloc.c

Go to the documentation of this file.
00001 
00005 #include "system.h"
00006 #include "debug.h"
00007 
00008 #if !defined(EXIT_FAILURE)
00009 #define EXIT_FAILURE    1
00010 #endif
00011 
00012 /*@-modfilesys@*/
00013 /*@only@*/ void *vmefail(size_t size)
00014 {
00015     fprintf(stderr, _("memory alloc (%u bytes) returned NULL.\n"), (unsigned)size);
00016     exit(EXIT_FAILURE);
00017     /*@notreached@*/
00018     return NULL;
00019 }
00020 /*@=modfilesys@*/
00021 
00022 #if !(HAVE_MCHECK_H && defined(__GNUC__)) && !defined(__LCLINT__)
00023 
00024 /*@out@*/ /*@only@*/ void * xmalloc (size_t size)
00025 {
00026     register void *value;
00027     if (size == 0) size++;
00028     value = malloc (size);
00029     if (value == 0)
00030         value = vmefail(size);
00031     return value;
00032 }
00033 
00034 /*@only@*/ void * xcalloc (size_t nmemb, size_t size)
00035 {
00036     register void *value;
00037     if (size == 0) size++;
00038     if (nmemb == 0) nmemb++;
00039     value = calloc (nmemb, size);
00040     if (value == 0)
00041         value = vmefail(size);
00042     return value;
00043 }
00044 
00045 /*@only@*/ void * xrealloc (/*@only@*/ void *ptr, size_t size)
00046 {
00047     register void *value;
00048     if (size == 0) size++;
00049     value = realloc (ptr, size);
00050     if (value == 0)
00051         value = vmefail(size);
00052     return value;
00053 }
00054 
00055 /*@only@*/ char * xstrdup (const char *str)
00056 {
00057     size_t size = strlen(str) + 1;
00058     char *newstr = (char *) malloc (size);
00059     if (newstr == 0)
00060         newstr = (char *) vmefail(size);
00061     strcpy (newstr, str);
00062     return newstr;
00063 }
00064 
00065 #endif  /* !(HAVE_MCHECK_H && defined(__GNUC__)) */

Generated on Fri Oct 12 08:44:54 2007 for rpm by  doxygen 1.5.2