Replace free() with mh_free0()
[mmh] / sbr / utils.c
index fa4cfdb..f61456d 100644 (file)
 #define MAXMSGS 256
 
 /*
-** Safely call malloc
-*/
-void *
-mh_xmalloc(size_t size)
-{
-       void *memory;
-
-       if (size == 0) {
-               adios(EX_SOFTWARE, NULL, "Tried to malloc 0 bytes");
-       }
-
-       memory = malloc(size);
-       if (!memory) {
-               adios(EX_OSERR, NULL, "Malloc failed");
-       }
-
-       return memory;
-}
-
-/*
 ** Safely call realloc
 */
 void *
@@ -51,7 +31,7 @@ mh_xrealloc(void *ptr, size_t size)
 
        /* Some non-POSIX realloc()s don't cope with realloc(NULL,sz) */
        if (!ptr) {
-               return mh_xcalloc((size_t) 1, size);
+               return mh_xcalloc(1, size);
        }
        if (size == 0) {
                adios(EX_SOFTWARE, NULL, "Tried to realloc 0 bytes");
@@ -85,6 +65,18 @@ mh_xcalloc(size_t nmemb, size_t size)
 }
 
 /*
+** Free a pointer and set it to NULL.
+*/
+void
+mh_free0(void * ptr)
+{
+       void ** p;
+       p = ptr;
+       free(*p);
+       *p = NULL;
+}
+
+/*
 ** Return the present working directory, if the current directory does not
 ** exist, or is too long, make / the pwd.
 */
@@ -134,12 +126,12 @@ add(char *s2, char *s1)
                len2 = strlen(s2);
        }
 
-       cp = mh_xmalloc(len1 + len2 + 1);
+       cp = mh_xcalloc(len1 + len2 + 1, sizeof(char));
 
        /* Copy s1 and free it */
        if (s1) {
                memcpy(cp, s1, len1);
-               free(s1);
+               mh_free0(&s1);
        }
 
        /* Copy s2 */
@@ -175,7 +167,7 @@ create_folder(char *folder, int autocreate, void (*done_callback)(int))
                        if (!getanswer(cp)) {
                                done_callback(EX_CANTCREAT);
                        }
-                       free(cp);
+                       mh_free0(&cp);
                } else if (autocreate == -1) {
                        /* do not create, so exit */
                        done_callback(EX_CANTCREAT);