diff options
Diffstat (limited to 'clang/lib/Rewrite/Core')
-rw-r--r-- | clang/lib/Rewrite/Core/Rewriter.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/Rewrite/Core/Rewriter.cpp b/clang/lib/Rewrite/Core/Rewriter.cpp index afb1080c66a..51af83954c5 100644 --- a/clang/lib/Rewrite/Core/Rewriter.cpp +++ b/clang/lib/Rewrite/Core/Rewriter.cpp @@ -26,8 +26,11 @@ using namespace clang; raw_ostream &RewriteBuffer::write(raw_ostream &os) const { - // FIXME: eliminate the copy by writing out each chunk at a time - os << std::string(begin(), end()); + // Walk RewriteRope chunks efficiently using MoveToNextPiece() instead of the + // character iterator. + for (RopePieceBTreeIterator I = begin(), E = end(); I != E; + I.MoveToNextPiece()) + os << I.piece(); return os; } |