On Thu, 5 Aug 2010, Parrot wrote:
> Various memory management routines (e.g., `gc_ms_allocate_buffer_storage`)
> assume that the size of a buffer header is equal to the size of a pointer.
> This is probably true throughout the system as it stands, but those same
> routines take pains not to make that assumption in other places.
>
> Here is a line from the above routine:
> {{{
> Buffer_buflen(buffer) = new_size - sizeof (void *);
> }}}
> If the size of a pointer is less than the buffer header size, the value
> stored in `buflen` will be too big. `new_size` includes the entire size of
> the buffer header, which may include alignment padding in addition to the
> pointer.
I don't understand what you are saying. A Buffer looks like this
(include/parrot/pobj.h):
typedef struct buffer_t {
Parrot_UInt flags;
void * _bufstart;
size_t _buflen;
} Buffer;
Which part, specifically, is the "header"? Or are you referring to
something else?
--
Andy Dougherty [email protected]
_______________________________________________
parrot-tickets mailing list
[email protected]
http://lists.parrot.org/mailman/listinfo/parrot-tickets