Improved memory debugging for xmalloc/nmem.c. References to NMEM
[yaz-moved-to-github.git] / util / xmalloc.c
index fad55d8..8fd0132 100644 (file)
@@ -4,7 +4,21 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: xmalloc.c,v $
- * Revision 1.1  1995-11-01 11:56:53  quinn
+ * Revision 1.5  1997-10-31 12:20:09  adam
+ * Improved memory debugging for xmalloc/nmem.c. References to NMEM
+ * instead of ODR in n ESPEC-1 handling in source d1_espec.c.
+ * Bug fix: missing fclose in data1_read_espec1.
+ *
+ * Revision 1.4  1996/07/03 13:21:36  adam
+ * Function xfree_f checks for NULL pointer.
+ *
+ * Revision 1.3  1995/12/05  15:08:44  adam
+ * Fixed verbose of xrealloc.
+ *
+ * Revision 1.2  1995/12/05  11:08:37  adam
+ * More verbose malloc routines.
+ *
+ * Revision 1.1  1995/11/01  11:56:53  quinn
  * Added Xmalloc.
  *
  * Revision 1.6  1995/10/16  14:03:11  quinn
 
 void *xrealloc_f (void *o, size_t size, char *file, int line)
 {
-    void *p;
+    void *p = realloc (o, size);
 
-#ifdef TRACE_XMALLOC
-    fprintf(stderr, "%s:%d: xrealloc(s=%d)\n", file, line, size);
+#if TRACE_XMALLOC
+    logf (LOG_DEBUG,
+            "%s:%d: xrealloc(s=%d) %p -> %p", file, line, size, o, p);
 #endif
-    p = realloc (o, size);
     if (!p)
     {
        logf (LOG_FATAL|LOG_ERRNO, "Out of memory, realloc (%d bytes)", size);
@@ -53,12 +67,11 @@ void *xrealloc_f (void *o, size_t size, char *file, int line)
 
 void *xmalloc_f (size_t size, char *file, int line)
 {
-    void *p;
+    void *p = malloc (size);
 
-#ifdef TRACE_XMALLOC
-    fprintf(stderr, "%s:%d: xmalloc(s=%d)\n", file, line, size);
+#if TRACE_XMALLOC
+    logf (LOG_DEBUG, "%s:%d: xmalloc(s=%d) %p", file, line, size, p);
 #endif
-    p = malloc (size);
     if (!p)
     {
         logf (LOG_FATAL, "Out of memory - malloc (%d bytes)", size);
@@ -69,11 +82,10 @@ void *xmalloc_f (size_t size, char *file, int line)
 
 void *xcalloc_f (size_t nmemb, size_t size, char *file, int line)
 {
-    void *p;
-#ifdef TRACE_XMALLOC
-    fprintf(stderr, "%s:%d: xcalloc(s=%d)\n", file, line, size);
+    void *p = calloc (nmemb, size);
+#if TRACE_XMALLOC
+    logf (LOG_DEBUG, "%s:%d: xcalloc(s=%d) %p", file, line, size, p);
 #endif
-    p = calloc (nmemb, size);
     if (!p)
     {
         logf (LOG_FATAL, "Out of memory - calloc (%d, %d)", nmemb, size);
@@ -85,8 +97,8 @@ void *xcalloc_f (size_t nmemb, size_t size, char *file, int line)
 char *xstrdup_f (const char *s, char *file, int line)
 {
     char *p = xmalloc (strlen(s)+1);
-#ifdef TRACE_XMALLOC
-    fprintf(stderr, "%s:%d: xstrdup(s=%d)\n", file, line, strlen(s)+1);
+#if TRACE_XMALLOC
+    logf (LOG_DEBUG, "%s:%d: xstrdup(s=%d) %p", file, line, strlen(s)+1, p);
 #endif
     strcpy (p, s);
     return p;
@@ -95,8 +107,11 @@ char *xstrdup_f (const char *s, char *file, int line)
 
 void xfree_f(void *p, char *file, int line)
 {
-#ifdef TRACE_XMALLOC
-    fprintf(stderr, "%s:%d: xfree\n", file, line);
+    if (!p)
+        return ;
+#if TRACE_XMALLOC
+    if (p)
+        logf (LOG_DEBUG, "%s:%d: xfree %p", file, line, p);
 #endif
     free(p);
 }