[flang][unittests] Fix recent snprintf() changes to use correct buffer lengths
authorPeter Klausler <pklausler@nvidia.com>
Mon, 17 Jul 2023 20:10:36 +0000 (13:10 -0700)
committerPeter Klausler <pklausler@nvidia.com>
Tue, 18 Jul 2023 17:28:16 +0000 (10:28 -0700)
A recent patch replaced two sprintf() calls with snprintf(), but didn't
use the right length for the remaining space in the buffer.

Differential Revision: https://reviews.llvm.org/D155224

flang/unittests/Decimal/quick-sanity-test.cpp
flang/unittests/Decimal/thorough-test.cpp

index 74434c1..dafb075 100644 (file)
@@ -53,7 +53,8 @@ void testReadback(float x, int flags) {
       ++expo;
     }
     if (q >= buffer && q < buffer + sizeof buffer) {
-      std::snprintf(q + result.length, sizeof buffer, "e%d", expo);
+      std::snprintf(q + result.length,
+          buffer + sizeof buffer - (q + result.length), "e%d", expo);
     }
     const char *p{q};
     auto rflags{ConvertDecimalToFloat(&p, &y, RoundNearest)};
index 2261a1c..46951f3 100644 (file)
@@ -51,7 +51,8 @@ void testReadback(float x, int flags) {
       if (*q == '-' || *q == '+') {
         ++expo;
       }
-      std::snprintf(q + result.length, sizeof buffer, "e%d", expo);
+      std::snprintf(q + result.length,
+          buffer + sizeof buffer - (q + result.length), "e%d", expo);
     }
     const char *p{q};
     auto rflags{ConvertDecimalToFloat(&p, &y, RoundNearest)};