+ if (fp->_r <= 0 && __srefill(fp))
+ return (WEOF);
+ if (xrl->__mb_cur_max == 1) {
+ /* Fast path for single-byte encodings. */
+ wc = *fp->_p++;
+ fp->_r--;
+ return (wc);
+ }
+ do {
+ nconv = __mbrtowc(&wc, fp->_p, fp->_r, &fp->_mbstate, loc);
+ if (nconv == (size_t)-1)