diff options
| author | Miles Bader <miles@lsi.nec.co.jp> | 2003-09-17 11:50:18 +0000 | 
|---|---|---|
| committer | Miles Bader <miles@lsi.nec.co.jp> | 2003-09-17 11:50:18 +0000 | 
| commit | f32264c80281c3ff98ad8cfdb7b9ba4c97602e83 (patch) | |
| tree | 309dd1fb6470ad89b5dc3668ab335327e5d7ff7a /libc/stdlib | |
| parent | 5e16460b41558637332877d5c69596760fb02832 (diff) | |
Make sure static heaps are aligned correctly.
Diffstat (limited to 'libc/stdlib')
| -rw-r--r-- | libc/stdlib/malloc/heap.h | 20 | 
1 files changed, 11 insertions, 9 deletions
diff --git a/libc/stdlib/malloc/heap.h b/libc/stdlib/malloc/heap.h index 2d6d55fd8..13e37ea6c 100644 --- a/libc/stdlib/malloc/heap.h +++ b/libc/stdlib/malloc/heap.h @@ -1,8 +1,8 @@  /*   * libc/stdlib/malloc/heap.h -- heap allocator used for malloc   * - *  Copyright (C) 2002  NEC Corporation - *  Copyright (C) 2002  Miles Bader <miles@gnu.org> + *  Copyright (C) 2002,03  NEC Electronics Corporation + *  Copyright (C) 2002,03  Miles Bader <miles@gnu.org>   *   * This file is subject to the terms and conditions of the GNU Lesser   * General Public License.  See the file COPYING.LIB in the main @@ -24,7 +24,8 @@  /* The heap allocates in multiples of, and aligned to, HEAP_GRANULARITY.     HEAP_GRANULARITY must be a power of 2.  Malloc depends on this being the     same as MALLOC_ALIGNMENT.  */ -#define HEAP_GRANULARITY	(sizeof (double)) +#define HEAP_GRANULARITY_TYPE	double +#define HEAP_GRANULARITY	(sizeof (HEAP_GRANULARITY_TYPE))  /* A heap is a collection of memory blocks, from which smaller blocks @@ -74,12 +75,13 @@ struct heap_free_area  /* This rather clumsy macro allows one to declare a static free-area for     passing to HEAP_INIT_WITH_FA initializer macro.  This is only use for     which NAME is allowed.  */ -#define HEAP_DECLARE_STATIC_FREE_AREA(name, size)			\ -  static struct								\ -  {									\ -    char space[(size) - sizeof (struct heap_free_area)];		\ -    struct heap_free_area _fa;						\ -  } name = { "", { (size), 0, 0 } } +#define HEAP_DECLARE_STATIC_FREE_AREA(name, size)			      \ +  static struct								      \ +  {									      \ +    HEAP_GRANULARITY_TYPE space[((size) - sizeof (struct heap_free_area))     \ +				/ HEAP_GRANULARITY];			      \ +    struct heap_free_area _fa;						      \ +  } name = { { (HEAP_GRANULARITY_TYPE)0 }, { (size), 0, 0 } }  /* Rounds SZ up to be a multiple of HEAP_GRANULARITY.  */  | 
