/* Some non-POSIX realloc()s don't cope with realloc(NULL,sz) */
if (!ptr) {
- return mh_xmalloc(size);
+ return mh_xcalloc((size_t) 1, size);
}
if (size == 0)
}
/*
+ * Safely call calloc
+ */
+void *
+mh_xcalloc(size_t nmemb, size_t size)
+{
+ void *memory;
+
+ if (nmemb == 0 || size == 0)
+ adios(EX_SOFTWARE, NULL, "Tried to calloc 0 bytes");
+
+ if ((memory = calloc(nmemb, size))) {
+ return memory;
+ } else {
+ adios(EX_OSERR, NULL, "calloc failed");
+ }
+}
+
+/*
** Return the present working directory, if the current directory does not
** exist, or is too long, make / the pwd.
*/
char *
pwd(void)
{
- register char *cp;
+ char *cp;
static char curwd[PATH_MAX];
if (!getcwd(curwd, PATH_MAX)) {