X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fnmem.c;h=1f8824f30076606851b169d8ba640502d6712c81;hb=5c3d2d2ab097e4bb59ba5718a396b020a2d302c0;hp=d1c46331911d92d7a780dce52362fea9b7c474e6;hpb=f4c095a042b1bcccb78136be87944e46412386aa;p=yaz-moved-to-github.git diff --git a/src/nmem.c b/src/nmem.c index d1c4633..1f8824f 100644 --- a/src/nmem.c +++ b/src/nmem.c @@ -1,8 +1,8 @@ /* - * Copyright (c) 1995-2004, Index Data. + * Copyright (c) 1995-2005, Index Data. * See the file LICENSE for details. * - * $Id: nmem.c,v 1.7 2004-12-13 14:21:55 heikki Exp $ + * $Id: nmem.c,v 1.11 2005-01-05 10:23:42 adam Exp $ */ /** @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -41,6 +42,23 @@ #define NMEM_CHUNK (4*1024) +struct align { + char x; + union { + char c; + short s; + int i; + long l; +#if HAVE_LONG_LONG + long long ll; +#endif + 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 +284,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 +490,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(