Do not assume that vstr buf is the same after it was extended.
Make file.read() and file.read(-1) call out to file.readall().

Per Python3 io module semantics.