summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/raw_ostream.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Support/raw_ostream.cpp')
-rw-r--r--llvm/lib/Support/raw_ostream.cpp17
1 files changed, 4 insertions, 13 deletions
diff --git a/llvm/lib/Support/raw_ostream.cpp b/llvm/lib/Support/raw_ostream.cpp
index b8a1537ae8a..d156826144a 100644
--- a/llvm/lib/Support/raw_ostream.cpp
+++ b/llvm/lib/Support/raw_ostream.cpp
@@ -729,26 +729,17 @@ void raw_svector_ostream::resync() {
}
void raw_svector_ostream::write_impl(const char *Ptr, size_t Size) {
- size_t NewSize = OS.size() + Size;
- size_t NewReservation = NewSize + 64;
-
- bool NoOverlap = Ptr + Size < OS.begin() || Ptr > OS.begin() + OS.capacity();
-
- if (NoOverlap) {
- assert(!GetNumBytesInBuffer());
- OS.reserve(NewReservation);
- memcpy(OS.end(), Ptr, Size);
- OS.set_size(NewSize);
- } else if (Ptr == OS.end()) {
+ if (Ptr == OS.end()) {
// Grow the buffer to include the scratch area without copying.
+ size_t NewSize = OS.size() + Size;
assert(NewSize <= OS.capacity() && "Invalid write_impl() call!");
OS.set_size(NewSize);
- OS.reserve(NewReservation);
} else {
+ assert(!GetNumBytesInBuffer());
OS.append(Ptr, Ptr + Size);
- OS.reserve(NewReservation);
}
+ OS.reserve(OS.size() + 64);
SetBuffer(OS.end(), OS.capacity() - OS.size());
}
OpenPOWER on IntegriCloud