X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=util%2Fxmalloc.c;h=4900a50d3819953c7d6a84452d2a646d7d01887f;hp=d4aa919db6c5fa15a09f2183f152b806f91d856e;hb=fd4adcc80d442f84c6a1894e890b1b6ccd02615e;hpb=64d911da4c79982db410fc56e74e43aedf34f937 diff --git a/util/xmalloc.c b/util/xmalloc.c index d4aa919..4900a50 100644 --- a/util/xmalloc.c +++ b/util/xmalloc.c @@ -1,60 +1,25 @@ /* - * Copyright (C) 1994-1999, Index Data + * Copyright (C) 1994-2001, Index Data * All rights reserved. * Sebastian Hammer, Adam Dickmeiss * - * $Log: xmalloc.c,v $ - * Revision 1.7 1999-07-13 13:24:53 adam - * Updated memory debugging memory allocatation routines. - * - * Revision 1.6 1998/02/11 11:53:36 adam - * Changed code so that it compiles as C++. - * - * 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 - * Changes to support element set names and espec1 - * - * Revision 1.5 1995/09/04 12:34:06 adam - * Various cleanup. YAZ util used instead. - * - * Revision 1.4 1994/10/05 10:16:16 quinn - * Added xrealloc. Fixed bug in log. - * - * Revision 1.3 1994/09/26 16:31:37 adam - * Added xcalloc_f. - * - * Revision 1.2 1994/08/18 08:23:26 adam - * Res.c now use handles. xmalloc defines xstrdup. - * - * Revision 1.1 1994/08/17 13:37:54 adam - * xmalloc.c added to util. - * + * $Id: xmalloc.c,v 1.15 2001-11-13 23:00:43 adam Exp $ */ +#if HAVE_CONFIG_H +#include +#endif + #include #include #include -#include -#include +#include +#include -#define TRACE_XMALLOC 0 +#ifndef TRACE_XMALLOC +#define TRACE_XMALLOC 1 +#endif #if TRACE_XMALLOC > 1 @@ -107,12 +72,12 @@ void xfree_d(void *ptr, const char *file, int line) ((char*)ptr - 4*sizeof(char) - sizeof(*dinfo)); if (memcmp(head, (char*) ptr - 4*sizeof(char), 4*sizeof(char))) { - logf(LOG_FATAL, "xfree_d bad head, %s:%d, %p", file, line, ptr); + yaz_log(LOG_FATAL, "xfree_d bad head, %s:%d, %p", file, line, ptr); abort(); } if (memcmp((char*) ptr + dinfo->len, tail, 4*sizeof(char))) { - logf(LOG_FATAL, "xfree_d bad tail, %s:%d, %p", file, line, ptr); + yaz_log(LOG_FATAL, "xfree_d bad tail, %s:%d, %p", file, line, ptr); abort(); } if (dinfo->prev) @@ -142,13 +107,15 @@ void *xrealloc_d(void *p, size_t nbytes, const char *file, int line) { if (memcmp(head, ptr - 4*sizeof(char), 4*sizeof(char))) { - logf(LOG_FATAL, "xrealloc_d bad head, %s:%d, %p", file, line, ptr); + yaz_log(LOG_FATAL, "xrealloc_d bad head, %s:%d, %p", + file, line, ptr); abort(); } dinfo = (struct dmalloc_info *) (ptr-4*sizeof(char) - sizeof(*dinfo)); if (memcmp(ptr + dinfo->len, tail, 4*sizeof(char))) { - logf(LOG_FATAL, "xrealloc_d bad tail, %s:%d, %p", file, line, ptr); + yaz_log(LOG_FATAL, "xrealloc_d bad tail, %s:%d, %p", + file, line, ptr); abort(); } if (dinfo->prev) @@ -217,19 +184,19 @@ void xmalloc_trav_d(const char *file, int line) size_t size = 0; struct dmalloc_info *dinfo = dmalloc_list; - logf (LOG_LOG, "malloc_trav %s:%d", file, line); + yaz_log (LOG_LOG, "malloc_trav %s:%d", file, line); while (dinfo) { - logf (LOG_LOG, " %20s:%d p=%p size=%d", dinfo->file, dinfo->line, - dinfo+sizeof(*dinfo)+4*sizeof(char), dinfo->len); + yaz_log (LOG_LOG, " %20s:%d p=%p size=%d", dinfo->file, dinfo->line, + ((char*) dinfo)+sizeof(*dinfo)+4*sizeof(char), dinfo->len); size += dinfo->len; dinfo = dinfo->next; } - logf (LOG_LOG, "total bytes %ld", (long) size); + yaz_log (LOG_LOG, "total bytes %ld", (long) size); } #else -/* ! TRACE_XMALLOC */ +/* TRACE_XMALLOC <= 1 */ #define xrealloc_d(o, x, f, l) realloc(o, x) #define xmalloc_d(x, f, l) malloc(x) #define xcalloc_d(x,y, f, l) calloc(x,y) @@ -247,12 +214,13 @@ void *xrealloc_f (void *o, size_t size, const char *file, int line) void *p = xrealloc_d (o, size, file, line); #if TRACE_XMALLOC - logf (LOG_DEBUG, + yaz_log (LOG_DEBUG, "%s:%d: xrealloc(s=%d) %p -> %p", file, line, size, o, p); #endif if (!p) { - logf (LOG_FATAL|LOG_ERRNO, "Out of memory, realloc (%d bytes)", size); + yaz_log (LOG_FATAL|LOG_ERRNO, "Out of memory, realloc (%d bytes)", + size); exit(1); } return p; @@ -263,11 +231,11 @@ void *xmalloc_f (size_t size, const char *file, int line) void *p = xmalloc_d (size, file, line); #if TRACE_XMALLOC - logf (LOG_DEBUG, "%s:%d: xmalloc(s=%d) %p", file, line, size, p); + yaz_log (LOG_DEBUG, "%s:%d: xmalloc(s=%d) %p", file, line, size, p); #endif if (!p) { - logf (LOG_FATAL, "Out of memory - malloc (%d bytes)", size); + yaz_log (LOG_FATAL, "Out of memory - malloc (%d bytes)", size); exit (1); } return p; @@ -277,11 +245,11 @@ void *xcalloc_f (size_t nmemb, size_t size, const char *file, int line) { void *p = xcalloc_d (nmemb, size, file, line); #if TRACE_XMALLOC - logf (LOG_DEBUG, "%s:%d: xcalloc(s=%d) %p", file, line, size, p); + yaz_log (LOG_DEBUG, "%s:%d: xcalloc(s=%d) %p", file, line, size, p); #endif if (!p) { - logf (LOG_FATAL, "Out of memory - calloc (%d, %d)", nmemb, size); + yaz_log (LOG_FATAL, "Out of memory - calloc (%d, %d)", nmemb, size); exit (1); } return p; @@ -291,7 +259,7 @@ char *xstrdup_f (const char *s, const char *file, int line) { char *p = (char *)xmalloc_d (strlen(s)+1, file, line); #if TRACE_XMALLOC - logf (LOG_DEBUG, "%s:%d: xstrdup(s=%d) %p", file, line, strlen(s)+1, p); + yaz_log (LOG_DEBUG, "%s:%d: xstrdup(s=%d) %p", file, line, strlen(s)+1, p); #endif strcpy (p, s); return p; @@ -303,7 +271,7 @@ void xfree_f(void *p, const char *file, int line) return ; #if TRACE_XMALLOC if (p) - logf (LOG_DEBUG, "%s:%d: xfree %p", file, line, p); + yaz_log (LOG_DEBUG, "%s:%d: xfree %p", file, line, p); #endif xfree_d(p, file, line); }