Fix segfault on complex pointer formatting (#642)

This commit is contained in:
Victor Zverovich 2018-02-01 21:28:20 -08:00
parent 0555cea5fc
commit 8cf30aa2be
2 changed files with 7 additions and 3 deletions

View File

@ -3000,13 +3000,13 @@ typename BasicWriter<Char>::CharPtr
CharPtr p = grow_buffer(fill_size);
std::uninitialized_fill(p, p + fill_size, fill);
}
CharPtr result = prepare_int_buffer(
num_digits, subspec, prefix, prefix_size);
std::ptrdiff_t offset = get(prepare_int_buffer(
num_digits, subspec, prefix, prefix_size)) - &buffer_[0];
if (align == ALIGN_LEFT) {
CharPtr p = grow_buffer(fill_size);
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;
if (width <= size) {

View File

@ -1761,3 +1761,7 @@ void convert(int);
TEST(FormatTest, ConvertCollision) {
fmt::format("{}", 42);
}
TEST(FormatTest, Regression) {
fmt::format("...........{:<77777.7p}", "foo");
}