read/write: account for buffer changes during wait