size_t num_read;
if (retain < s->end - s->readpos) retain = s->end - s->readpos;
- /* assert (retain <= s->readpos - s->msg_buf <= sizeof msg_buf); */
+ assert (retain <= s->readpos - s->msg_buf);
/* Move what we want to retain at end of the buffer to the beginning. */
memmove (s->msg_buf, s->readpos - retain, retain);
return num_read;
}
+/* The return values of the following functions are a bit
+ subtle. They can return 0x00 - 0xff as a valid character,
+ but EOF is typically 0xffffffff. */
static int
Getc (m_getfld_state_t s) {
if (s->end - s->readpos < 1) {
}
++s->bytes_read;
- return s->readpos < s->end ? *s->readpos++ : EOF;
+ return s->readpos < s->end ? (unsigned char) *s->readpos++ : EOF;
}
static int
}
}
- return s->readpos < s->end ? *s->readpos : EOF;
+ return s->readpos < s->end ? (unsigned char) *s->readpos : EOF;
}
static int
return EOF;
} else {
--s->bytes_read;
- return *--s->readpos = c;
+ return *--s->readpos = (unsigned char) c;
}
}