struct memstream *stream;
struct msblock *block;
};
-#define FB_MEM(f) ((struct fb_mem *)(f)->is_fastbuf)
+#define FB_MEM(f) ((struct fb_mem *)(f))
static int
fbmem_refill(struct fastbuf *f)
{
if (pos <= b->pos + (ucw_off_t)b->size) /* <=, because we need to be able to seek just after file end */
{
- f->buffer = b->data;
+ f->buffer = f->bstop = b->data;
f->bptr = b->data + (pos - b->pos);
- f->bufend = f->bstop = b->data + b->size;
- f->pos = b->pos + b->size;
+ f->bufend = b->data + b->size;
+ f->pos = b->pos;
FB_MEM(f)->block = b;
return 1;
}
if (!m->first && !pos)
{
/* Seeking to offset 0 in an empty file needs an exception */
- f->buffer = f->bptr = f->bufend = NULL;
+ f->buffer = f->bptr = f->bstop = f->bufend = NULL;
f->pos = 0;
FB_MEM(f)->block = NULL;
return 1;
}
- bthrow(f, "fb.seek", "fbmem_seek to invalid offset");
+ bthrow(f, "seek", "fbmem_seek to an invalid offset");
}
static void
f->name = "<fbmem-write>";
f->spout = fbmem_spout;
f->close = fbmem_close;
- fb_tie(f);
return f;
}
f->seek = fbmem_seek;
f->close = fbmem_close;
f->can_overwrite_buffer = 1;
- fb_tie(f);
return f;
}