Only call ftello(3) in enter_getfld() when track_filepos has been
requested; not often.
static void
enter_getfld (m_getfld_state_t *gstate, FILE *iob) {
m_getfld_state_t s;
- off_t pos = ftello (iob);
+ off_t pos;
if (! *gstate) {
m_getfld_state_init (gstate, iob);
readpos shift code being currently unused. */
s->iob = iob;
- if (s->track_filepos && (pos != 0 || s->last_internal_pos != 0)) {
+ if (!s->track_filepos)
+ return;
+
+ pos = ftello(iob);
+ if (pos != 0 || s->last_internal_pos != 0) {
if (s->last_internal_pos == 0) {
s->total_bytes_read = pos;
} else {