aboutsummaryrefslogtreecommitdiffstats
path: root/printf.c
diff options
context:
space:
mode:
authorMarco Paland <marco@paland.com>2018-09-14 13:16:22 +0200
committerMarco Paland <marco@paland.com>2018-09-14 13:16:22 +0200
commitf8a2be378d6df840ee16e0019435cadc659348c1 (patch)
tree7706c73f457561dcf1e12a15ff239e72e6d8f831 /printf.c
parentbe3047911075b2e917d73451068e0b84373eefb9 (diff)
downloadprintf-f8a2be378d6df840ee16e0019435cadc659348c1.tar.gz
printf-f8a2be378d6df840ee16e0019435cadc659348c1.tar.bz2
printf-f8a2be378d6df840ee16e0019435cadc659348c1.zip
fix(printf): fix broken right-padding in _ftoa
Fixes #24
Diffstat (limited to 'printf.c')
-rw-r--r--printf.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/printf.c b/printf.c
index e4c83e5..50af893 100644
--- a/printf.c
+++ b/printf.c
@@ -262,6 +262,8 @@ static size_t _ntoa_long_long(out_fct_type out, char* buffer, size_t idx, size_t
#if defined(PRINTF_SUPPORT_FLOAT)
static size_t _ftoa(out_fct_type out, char* buffer, size_t idx, size_t maxlen, double value, unsigned int prec, unsigned int width, unsigned int flags)
{
+ const size_t start_idx = idx;
+
char buf[PRINTF_FTOA_BUFFER_SIZE];
size_t len = 0U;
double diff = 0.0;
@@ -388,7 +390,7 @@ static size_t _ftoa(out_fct_type out, char* buffer, size_t idx, size_t maxlen, d
// append pad spaces up to given width
if (flags & FLAGS_LEFT) {
- while (idx < width) {
+ while (idx - start_idx < width) {
out(' ', buffer, idx++, maxlen);
}
}