#include "impl.h" // NewBuffer allocates a bytes buffer with size 'size'. // This is unallocated usage. // Returns the fat pointer by value. void* newbuffer(uintptr off, uintptr size) { if (size == 0 || size > BUF·max) size = BUF·size; void *mem = malloc(off + sizeof(Buffer) + size); Buffer *buf = mem + off; buf->eof = 0; buf->off = 0; buf->base = buf->b + BUF·ungets; buf->end = buf->b + size; buf->size = buf->end - buf->base; memset(buf->b, 0, size); return mem; }