X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fnmem.c;h=947a492fdb669e009b863e28016005a2116af811;hb=8aa7ee02ee4abdda2f19b42236600f2954ce6c05;hp=a16603d1b348e6b4af72be2ee6aeae93978d023e;hpb=3b96525a40981e162b959f3e842e0ff20e314320;p=yaz-moved-to-github.git diff --git a/src/nmem.c b/src/nmem.c index a16603d..947a492 100644 --- a/src/nmem.c +++ b/src/nmem.c @@ -2,7 +2,7 @@ * Copyright (c) 1995-2004, Index Data. * See the file LICENSE for details. * - * $Id: nmem.c,v 1.6 2004-11-18 15:18:13 heikki Exp $ + * $Id: nmem.c,v 1.10 2005-01-04 21:27:54 mike Exp $ */ /** @@ -22,9 +22,10 @@ #include #include #include +#include #include #include -#include +#include #include #ifdef WIN32 @@ -41,6 +42,21 @@ #define NMEM_CHUNK (4*1024) +struct align { + char x; + union { + char c; + short s; + int i; + long l; + long long ll; + float f; + double d; + } u; +}; + +#define NMEM_ALIGN (offsetof(struct align, u)) + static int log_level=0; static int log_level_initialized=0; @@ -266,7 +282,7 @@ void *nmem_malloc(NMEM n, int size) } r = p->buf + p->top; /* align size */ - p->top += (size + (sizeof(long) - 1)) & ~(sizeof(long) - 1); + p->top += (size + (NMEM_ALIGN - 1)) & ~(NMEM_ALIGN - 1); n->total += size; NMEM_LEAVE; return r; @@ -472,15 +488,18 @@ void yaz_set_errno(int v) void yaz_strerror(char *buf, int max) { +#ifdef WIN32 + DWORD err; +#endif char *cp; if (!log_level_initialized) { - log_level=yaz_log_module_level("nmem"); - log_level_initialized=1; + log_level = yaz_log_module_level("nmem"); + log_level_initialized = 1; } #ifdef WIN32 - DWORD err = GetLastError(); + err = GetLastError(); if (err) { FormatMessage(