$OpenBSD: patch-suballoc_cpp,v 1.5 2009/09/11 16:14:01 naddy Exp $ --- suballoc.cpp.orig Mon Sep 7 17:52:05 2009 +++ suballoc.cpp Mon Sep 7 17:53:22 2009 @@ -31,12 +31,18 @@ inline void* SubAllocator::RemoveNode(int indx) return RetVal; } +#define PAD __alignof__(void *) +#define ROUND(v) ((v) & (PAD - 1) ? ((v) + PAD) & ~(PAD - 1) : (v)) inline uint SubAllocator::U2B(int NU) { // We calculate the size of units in bytes based on real UNIT_SIZE. // In original implementation it was 8*NU+4*NU. +#ifndef __STRICT_ALIGNMENT return UNIT_SIZE*NU; +#else + return (ROUND(UNIT_SIZE * NU)); +#endif }