7 #include <string.h> // for memset
\r
8 #include <sys/types.h>
\r
13 inline void ufread(void *ptr, size_t size, size_t nmemb, FILE *stream)
\r
16 res = fread(ptr,size,nmemb,stream);
\r
18 throw ("ufread I/O error" );
\r
22 inline void ufwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
\r
25 res = fwrite(ptr,size,nmemb,stream);
\r
27 throw "ufwrite I/O error";
\r
31 inline void *urealloc(void *ptr, size_t size)
\r
33 void *dest = realloc(ptr,size);
\r
34 //don't fail if we requested size 0
\r
35 if (dest == NULL && size > 0 )
\r
36 throw std::bad_alloc();
\r
39 // realloc and set to 0
\r
40 inline void *urecalloc(void *ptr, size_t o_size, size_t n_size)
\r
42 if (o_size == n_size)
\r
45 void *dest = realloc(ptr,n_size);
\r
46 //don't fail if we requested size 0
\r
47 if (dest == NULL && n_size > 0 )
\r
48 throw std::bad_alloc();
\r
49 // Initialize the new area with 0
\r
50 void * n_area_start = &(((char*) dest)[o_size]);
\r
51 memset(n_area_start,0, n_size - o_size);
\r
55 inline void *ucalloc(size_t nmemb, size_t size)
\r
57 void * dest = calloc(nmemb,size);
\r
58 //don't fail if we requested size 0
\r
59 if (dest == NULL && nmemb > 0 && size > 0 )
\r
60 throw std::bad_alloc();
\r
64 inline void *umalloc(size_t size)
\r
66 void * dest = malloc(size);
\r
67 if (dest == NULL && size > 0)
\r
68 throw std::bad_alloc();
\r