e2-=sh;
}
while (e2<0) {
- uint32_t carry=0, *z2;
+ uint32_t carry=0, *b;
int sh=MIN(9,-e2);
for (d=a; d<z; d++) {
uint32_t rm = *d & (1<<sh)-1;
if (!*a) a++;
if (carry) *z++ = carry;
/* Avoid (slow!) computation past requested precision */
- z2 = ((t|32)=='f' ? r : a) + 2 + p/9;
- z = MIN(z, z2);
+ b = (t|32)=='f' ? r : a;
+ if (z-b > 2+p/9) z = b+2+p/9;
e2+=sh;
}
p = -1;
case 'S':
ws = arg.p;
- for (i=0; *ws && (l=wctomb(mb, *ws++))>=0 && l<=0U+p-i; i+=l);
+ for (i=l=0; i<0U+p && *ws && (l=wctomb(mb, *ws++))>=0 && l<=0U+p-i; i+=l);
if (l<0) return -1;
p = i;
pad(f, ' ', w, p, fl);
ws = arg.p;
- for (i=0; *ws && i+(l=wctomb(mb, *ws++))<=p; i+=l)
+ for (i=0; i<0U+p && *ws && i+(l=wctomb(mb, *ws++))<=p; i+=l)
out(f, mb, l);
pad(f, ' ', w, p, fl^LEFT_ADJ);
l = w>p ? w : p;
FLOCK(f);
if (!f->buf_size) {
saved_buf = f->buf;
- f->buf = internal_buf;
+ f->wpos = f->wbase = f->buf = internal_buf;
f->buf_size = sizeof internal_buf;
+ f->wend = internal_buf + sizeof internal_buf;
}
ret = printf_core(f, fmt, &ap2, nl_arg, nl_type);
if (saved_buf) {