Don't assume we can always read BYTES_PER_READ

If the next unicode character is too wide for the buffer the
total number of bytes read will be less than BYTES_PER_READ.

https://bugzilla.gnome.org/show_bug.cgi?id=723933