@@ -498,7 +498,9 @@ FMT_CONSTEXPR20 OutChar* copy_str(InputIt begin, InputIt end, OutChar* out) {
498
498
if (is_constant_evaluated ()) {
499
499
return copy_str<OutChar, InputIt, OutChar*>(begin, end, out);
500
500
}
501
- return std::uninitialized_copy (begin, end, out);
501
+ auto size = to_unsigned (end - begin);
502
+ std::uninitialized_copy (begin, end, make_checked (out, size));
503
+ return out + size;
502
504
}
503
505
504
506
template <typename OutChar, typename InputIt, typename OutputIt,
@@ -1791,10 +1793,12 @@ inline Char* write_significand(Char* out, UInt significand,
1791
1793
if (!decimal_point)
1792
1794
return format_decimal (out, significand , significand_size).end ;
1793
1795
auto end = format_decimal (out + 1 , significand , significand_size).end ;
1794
- if (integral_size == 1 )
1796
+ if (integral_size == 1 ) {
1795
1797
out[0 ] = out[1 ];
1796
- else
1797
- std::uninitialized_copy_n (out + 1 , integral_size, out);
1798
+ } else {
1799
+ std::uninitialized_copy_n (out + 1 , integral_size,
1800
+ make_checked (out, to_unsigned (integral_size)));
1801
+ }
1798
1802
out[integral_size] = decimal_point;
1799
1803
return end;
1800
1804
}
0 commit comments