Unified · Split
| @@ -270,12 +270,15 @@ fetch_data(sl_v *args, int nargs, bool peek) · 269 unmodified lines | ||
| 270 | 270 | buf += got; |
| 271 | 271 | }else if(peek){ |
| 272 | 272 | char *data = (char*)(isrune ? buf+n : buf); |
| 273 | − got = ios_peek(s, (u8int*)data, n); | |
| 273 | + Rune r; | |
| 274 | + if(nem == 1 && (got = ios_peekrune(s, &r)) == 1) | |
| 275 | + got = runetochar(data, &r); | |
| 276 | + else | |
| 277 | + got = ios_peek(s, (u8int*)data, n); | |
| 274 | 278 | usize nr, nb, left = got; |
| 275 | 279 | for(nr = nb = 0; left > 0 && nr < nem; nr++){ |
| 276 | 280 | if(!fullrune(data, left)) |
| 277 | 281 | break; |
| 278 | − Rune r; | |
| 279 | 282 | int bc = chartorune(&r, data); |
| 280 | 283 | if(r == Runeerror) |
| 281 | 284 | bthrow(error(sl_errio, "invalid rune")); |