- uns len = b->bufend - b->buffer;
- b->buffer = xrealloc(b->buffer, 2*len);
- b->bufend = b->buffer + 2*len;
- b->bstop = b->buffer;
- b->bptr = b->buffer + len;
+ uint len = b->bufend - b->buffer;
+ if (FB_GBUF(b)->mp)
+ {
+ byte *old = b->buffer;
+ b->buffer = mp_alloc(FB_GBUF(b)->mp, 2 * len);
+ memcpy(b->buffer, old, len);
+ }
+ else
+ b->buffer = xrealloc(b->buffer, 2 * len);
+ b->bufend = b->buffer + 2 * len;
+ FB_GBUF(b)->end = b->bptr = b->buffer + len;