(Just for context for the follow-up) I am not sure how “clean” the code in 
#28006 is. Maybe an easier alternative might be to remove all calls to 
Get and instead wrap the calls that acted on 
FILE* into a lambda (which acts on 
FILE*) and pass the lambda to an 
Exec() member function. The 
Exec() function would then also reset the cached 
ftell state and force a call to 
ftell the next time it is needed. On top of requiring that the constructor takes a 
FILE*&& (taking ownership), this should be a relatively easy to review complete fix.