Piotr Caban : msvcrt: Update round_limb on first limb length change in printf.

Alexandre Julliard julliard at winehq.org
Sat Jul 10 16:24:32 CDT 2021


Module: wine
Branch: master
Commit: 2ffcf4402181e7e7e8c322b713924e5738506c88
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=2ffcf4402181e7e7e8c322b713924e5738506c88

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Sat Jul 10 20:38:16 2021 +0200

msvcrt: Update round_limb on first limb length change in printf.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51435
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/msvcrt/printf.h         | 14 ++++++++++++++
 dlls/ucrtbase/tests/printf.c |  1 +
 2 files changed, 15 insertions(+)

diff --git a/dlls/msvcrt/printf.h b/dlls/msvcrt/printf.h
index c6c074de795..d6b945e8ac7 100644
--- a/dlls/msvcrt/printf.h
+++ b/dlls/msvcrt/printf.h
@@ -704,11 +704,25 @@ static inline int FUNC_NAME(pf_output_fp)(FUNC_NAME(puts_clbk) pf_puts, void *pu
                 if(i != first_limb_len) {
                     first_limb_len = i;
                     radix_pos++;
+
+                    round_pos++;
+                    if (round_pos == LIMB_DIGITS)
+                    {
+                        round_pos = 0;
+                        round_limb++;
+                    }
                 }
             } else if(i == b->e) {
                 first_limb_len = 1;
                 radix_pos++;
                 b->e++;
+
+                round_pos++;
+                if (round_pos == LIMB_DIGITS)
+                {
+                    round_pos = 0;
+                    round_limb++;
+                }
             }
         }
     }
diff --git a/dlls/ucrtbase/tests/printf.c b/dlls/ucrtbase/tests/printf.c
index 96241b22cf0..588e579cc7e 100644
--- a/dlls/ucrtbase/tests/printf.c
+++ b/dlls/ucrtbase/tests/printf.c
@@ -819,6 +819,7 @@ static void test_printf_fp(void)
         { "%.0f", 0.5, { "1", NULL, NULL, NULL, "0" }, {NULL, NULL, NULL, NULL, "1" }},
         { "%.0f", 1.5, { "2" }},
         { "%.0f", 2.5, { "3", NULL, NULL, NULL, "2" }, {NULL, NULL, NULL, NULL, "3" }},
+        { "%g", 9.999999999999999e-5, { "0.0001" }},
     };
 
     const char *res = NULL;




More information about the wine-cvs mailing list