X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fnmem.c;h=947a492fdb669e009b863e28016005a2116af811;hb=8aa7ee02ee4abdda2f19b42236600f2954ce6c05;hp=37de136f58468a1aa51909fa6ac9437dc695918d;hpb=130c4f389f6e2166f533beb831e991f806130f72;p=yaz-moved-to-github.git diff --git a/src/nmem.c b/src/nmem.c index 37de136..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.8 2004-12-16 08:59:36 adam Exp $ + * $Id: nmem.c,v 1.10 2005-01-04 21:27:54 mike Exp $ */ /** @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -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;