瀏覽代碼

tiny-printf: Correct the snprintf() implementation

This current code passes the variable arguments list to sprintf(). This is
not correct. Fix it by calling _vprintf() directly.

This makes firefly-rk3288 boot again.

Fixes: abeb272 ("tiny-printf: Support snprintf()")
Reviewed-by: Stefan Roese <sr@denx.de>
Acked-by: Marek Vasut <marex@denx.de>
Signed-off-by: Simon Glass <sjg@chromium.org>
Simon Glass 8 年之前
父節點
當前提交
3191d84080
共有 1 個文件被更改,包括 3 次插入1 次删除
  1. 3 1
      lib/tiny-printf.c

+ 3 - 1
lib/tiny-printf.c

@@ -168,8 +168,10 @@ int snprintf(char *buf, size_t size, const char *fmt, ...)
 	int ret;
 
 	va_start(va, fmt);
-	ret = sprintf(buf, fmt, va);
+	outstr = buf;
+	ret = _vprintf(fmt, va, putc_outstr);
 	va_end(va);
+	*outstr = '\0';
 
 	return ret;
 }