That might be true on Unix, but it is certainly not true on Windows. Nevertheless perhaps a better approach would be to check in the read callback if the buffer read into is the current buffer and if not, copy that data into the current buffer. That way we can always be correct and don't potentially abort/restart a read. The only concern is rooting of the old buffer, but I think that is fine in this case.