keith@cecil.UUCP (keith gorlen) (07/24/86)
The stream function "putback" doesn't work if the character being put
back happened to be the last in the buffer. In this case the byte just
before the buffer will be clobbered.
A quick hack to work around this bug is to modify streambuf::allocate in
file streambuf.c to allocate an extra byte just before the buffer area:
if ((base = new char[BUFSIZE+1]) != NULL) {
pptr = gptr = ++base;
streambuf::~streambuf in file stream.h must also be modified:
~streambuf() { if (base != NULL && alloc) delete --base; }
This isn't a clean fix because putback can still cause problems when
buffers are specified via the streambuf::streambuf(char*,int)
constructor.
--
---
Keith Gorlen
Building 12A, Room 2017
Computer Systems Laboratory
Division of Computer Research and Technology
National Institutes of Health
Bethesda, MD 20892
phone: (301) 496-5363
uucp: {decvax!}seismo!elsie!cecil!keith