[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#215448: di_mem_chunk_alloc() should return sizeof(long) or better alignment



On Sun, Oct 12, 2003 at 11:48:07PM +0200, Falk Hueffner wrote:
> First, IMHO we should drop this stuff and just use malloc. I don't see
> any point in increasing code size and introducing new bugs thereby.
> 
> Anyway:
> 
> > struct di_mem_area
> > {
> >   di_mem_area *next;           /**< the next mem area */
> >   di_mem_area *prev;           /**< the previous mem area */
> >   di_ksize_t index;            /**< the current index into the "mem" array */
> >   di_ksize_t free;             /**< the number of free bytes in this mem area */
> >   di_ksize_t allocated;        /**< the number of atoms allocated from this area */
> >   char mem[MEM_AREA_SIZE];     /**< the mem array from which atoms get allocated
> >                                 *   the actual size of this array is determined by
> >                                 *   the mem chunk "area_size". ANSI says that it
> >                                 *   must be declared to be the maximum size it
> >                                 *   can possibly be (even though the actual size
> >                                 *   may be less).
> >                                 */
> > };
> > 
> > 
> > I also wonder about MEM_AREA_SIZE being hardwired at 4, although I
> > didn't dig in to the code far enough to see if it should be 8 on 64
> > bit platforms.
> 
> Just use long mem[] there, we can assume a C99 compiler, and it will
> ensure alignment (at least for all Linux platforms).

Really?  I thought the code later referenced something like

	&foo->mem[bar]

which will surely break if you just s/char/long/

Richard




Reply to: