mirror of
https://github.com/fmtlib/fmt.git
synced 2025-07-30 18:57:34 +02:00
Fix segfault on complex pointer formatting (#642)
This commit is contained in:
@ -3000,13 +3000,13 @@ typename BasicWriter<Char>::CharPtr
|
|||||||
CharPtr p = grow_buffer(fill_size);
|
CharPtr p = grow_buffer(fill_size);
|
||||||
std::uninitialized_fill(p, p + fill_size, fill);
|
std::uninitialized_fill(p, p + fill_size, fill);
|
||||||
}
|
}
|
||||||
CharPtr result = prepare_int_buffer(
|
std::ptrdiff_t offset = get(prepare_int_buffer(
|
||||||
num_digits, subspec, prefix, prefix_size);
|
num_digits, subspec, prefix, prefix_size)) - &buffer_[0];
|
||||||
if (align == ALIGN_LEFT) {
|
if (align == ALIGN_LEFT) {
|
||||||
CharPtr p = grow_buffer(fill_size);
|
CharPtr p = grow_buffer(fill_size);
|
||||||
std::uninitialized_fill(p, p + fill_size, fill);
|
std::uninitialized_fill(p, p + fill_size, fill);
|
||||||
}
|
}
|
||||||
return result;
|
return internal::make_ptr(&buffer_[0], buffer_.size()) + offset;
|
||||||
}
|
}
|
||||||
unsigned size = prefix_size + num_digits;
|
unsigned size = prefix_size + num_digits;
|
||||||
if (width <= size) {
|
if (width <= size) {
|
||||||
|
@ -1761,3 +1761,7 @@ void convert(int);
|
|||||||
TEST(FormatTest, ConvertCollision) {
|
TEST(FormatTest, ConvertCollision) {
|
||||||
fmt::format("{}", 42);
|
fmt::format("{}", 42);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(FormatTest, Regression) {
|
||||||
|
fmt::format("...........{:<77777.7p}", "foo");
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user