| Index: src/utils.cc
 | 
| diff --git a/src/utils.cc b/src/utils.cc
 | 
| index 7e8c088dd492dc527e9803204ff6de9b2f5ab7d2..71eaea55d261989a58af4381e20b147fc1b3ddb0 100644
 | 
| --- a/src/utils.cc
 | 
| +++ b/src/utils.cc
 | 
| @@ -46,7 +46,7 @@ void SimpleStringBuilder::AddString(const char* s) {
 | 
|  
 | 
|  
 | 
|  void SimpleStringBuilder::AddSubstring(const char* s, int n) {
 | 
| -  ASSERT(!is_finalized() && position_ + n < buffer_.length());
 | 
| +  ASSERT(!is_finalized() && position_ + n <= buffer_.length());
 | 
|    ASSERT(static_cast<size_t>(n) <= strlen(s));
 | 
|    memcpy(&buffer_[position_], s, n * kCharSize);
 | 
|    position_ += n;
 | 
| @@ -79,7 +79,13 @@ void SimpleStringBuilder::AddDecimalInteger(int32_t value) {
 | 
|  
 | 
|  
 | 
|  char* SimpleStringBuilder::Finalize() {
 | 
| -  ASSERT(!is_finalized() && position_ < buffer_.length());
 | 
| +  ASSERT(!is_finalized() && position_ <= buffer_.length());
 | 
| +  // If there is no space for null termination, overwrite last character.
 | 
| +  if (position_ == buffer_.length()) {
 | 
| +    position_--;
 | 
| +    // Print ellipsis.
 | 
| +    for (int i = 3; i > 0 && position_ > i; --i) buffer_[position_ - i] = '.';
 | 
| +  }
 | 
|    buffer_[position_] = '\0';
 | 
|    // Make sure nobody managed to add a 0-character to the
 | 
|    // buffer while building the string.
 | 
| 
 |