You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by cc...@apache.org on 2016/04/14 04:59:24 UTC

incubator-mynewt-core git commit: Fix for tinyprintf multiple integer args.

Repository: incubator-mynewt-core
Updated Branches:
  refs/heads/develop 4e5462f34 -> 963874bef


Fix for tinyprintf multiple integer args.

This is a fix for the previous tinyprintf fix
(4e5462f341361ed8aa380d31766d95fa8a8107fd).  Weird things would happen
when a printf string contained multiple integer format specifiers.


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/963874be
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/963874be
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/963874be

Branch: refs/heads/develop
Commit: 963874befe1c0915fce520a48d3f0809eb5acc37
Parents: 4e5462f
Author: Christopher Collins <cc...@apache.org>
Authored: Wed Apr 13 19:58:14 2016 -0700
Committer: Christopher Collins <cc...@apache.org>
Committed: Wed Apr 13 19:58:14 2016 -0700

----------------------------------------------------------------------
 libs/baselibc/src/tinyprintf.c | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/963874be/libs/baselibc/src/tinyprintf.c
----------------------------------------------------------------------
diff --git a/libs/baselibc/src/tinyprintf.c b/libs/baselibc/src/tinyprintf.c
index d57b2dd..42bd7cd 100644
--- a/libs/baselibc/src/tinyprintf.c
+++ b/libs/baselibc/src/tinyprintf.c
@@ -186,33 +186,33 @@ static unsigned putchw(FILE *putp, struct param *p)
 }
 
 static unsigned long long
-intarg(int lng, int sign, va_list va)
+intarg(int lng, int sign, va_list *va)
 {
     unsigned long long val;
 
     switch (lng) {
     case 0:
         if (sign) {
-            val = va_arg(va, int);
+            val = va_arg(*va, int);
         } else {
-            val = va_arg(va, unsigned int);
+            val = va_arg(*va, unsigned int);
         }
         break;
 
     case 1:
         if (sign) {
-            val = va_arg(va, long);
+            val = va_arg(*va, long);
         } else {
-            val = va_arg(va, unsigned long);
+            val = va_arg(*va, unsigned long);
         }
         break;
 
     case 2:
     default:
         if (sign) {
-            val = va_arg(va, long long);
+            val = va_arg(*va, long long);
         } else {
-            val = va_arg(va, unsigned long long);
+            val = va_arg(*va, unsigned long long);
         }
         break;
     }
@@ -274,25 +274,25 @@ size_t tfp_format(FILE *putp, const char *fmt, va_list va)
                 goto abort;
             case 'u':
                 p.base = 10;
-                ui2a(intarg(lng, 0, va), &p);
+                ui2a(intarg(lng, 0, &va), &p);
                 written += putchw(putp, &p);
                 break;
             case 'd':
             case 'i':
                 p.base = 10;
-                i2a(intarg(lng, 1, va), &p);
+                i2a(intarg(lng, 1, &va), &p);
                 written += putchw(putp, &p);
                 break;
             case 'x':
             case 'X':
                 p.base = 16;
                 p.uc = (ch == 'X');
-                i2a(intarg(lng, 0, va), &p);
+                ui2a(intarg(lng, 0, &va), &p);
                 written += putchw(putp, &p);
                 break;
             case 'o':
                 p.base = 8;
-                i2a(intarg(lng, 0, va), &p);
+                ui2a(intarg(lng, 0, &va), &p);
                 written += putchw(putp, &p);
                 break;
             case 'c':