fix %n specifier, again. this time it was storing the wrong value.
authorRich Felker <dalias@aerifal.cx>
Sun, 20 Feb 2011 22:10:40 +0000 (17:10 -0500)
committerRich Felker <dalias@aerifal.cx>
Sun, 20 Feb 2011 22:10:40 +0000 (17:10 -0500)
src/stdio/vfprintf.c

index 3512b4de7a1e49c88ce6ca9c7b0a92640b1b9c55..19afd6c9a5389a687f465b9ffb119b8bac1f7f7e 100644 (file)
@@ -526,13 +526,13 @@ static int printf_core(FILE *f, const char *fmt, va_list *ap, union arg *nl_arg,
                switch(t) {
                case 'n':
                        switch(ps) {
-                       case BARE: *(int *)arg.p = l; break;
-                       case LPRE: *(long *)arg.p = l; break;
-                       case LLPRE: *(long long *)arg.p = l; break;
-                       case HPRE: *(unsigned short *)arg.p = l; break;
-                       case HHPRE: *(unsigned char *)arg.p = l; break;
-                       case ZTPRE: *(size_t *)arg.p = l; break;
-                       case JPRE: *(uintmax_t *)arg.p = l; break;
+                       case BARE: *(int *)arg.p = cnt; break;
+                       case LPRE: *(long *)arg.p = cnt; break;
+                       case LLPRE: *(long long *)arg.p = cnt; break;
+                       case HPRE: *(unsigned short *)arg.p = cnt; break;
+                       case HHPRE: *(unsigned char *)arg.p = cnt; break;
+                       case ZTPRE: *(size_t *)arg.p = cnt; break;
+                       case JPRE: *(uintmax_t *)arg.p = cnt; break;
                        }
                        continue;
                case 'p':