the special case where mbrtowc returns 0 but consumed 1 byte of input
does not need to be considered, because the short-circuit for low
bytes already covered that case.
switch (type) {
case UTF_8:
- if (c < 128) break; // optimization
+ if (c < 128) break;
l = mbrtowc_utf8(&wc, *in, *inb, &st);
- if (!l) l++;
- else if (l == (size_t)-1) goto ilseq;
- else if (l == (size_t)-2) goto starved;
+ if (l == (size_t)-1) goto ilseq;
+ if (l == (size_t)-2) goto starved;
c = wc;
break;
case US_ASCII: