size_t buffer_offset = 0;
register char *buffer;
register size_t to_read, nread = 0;
- char c;
+ /* This must be unsigned to avoid sign extension in return. */
+ unsigned char c;
if (fp->__io_funcs.__read == NULL)
{
if (fp->__buffer == NULL)
{
/* We're unbuffered, so we want to read only one character. */
- buffer = &c;
+ buffer = (char *) &c;
to_read = 1;
}
else
fp->__put_limit = fp->__buffer;
/* Return the first character in the buffer. */
- return (unsigned char) *fp->__bufp++;
+ return *((unsigned char *) (fp->__bufp++));
}