It seems like it is not that hard to mark and rewind the pointer on errors. I realize it is not relevant to this pull request but maybe I wouldn't make it seem like this is so scary especially in the other comment.