| Index: source/common/charstr.cpp
 | 
| diff --git a/source/common/charstr.cpp b/source/common/charstr.cpp
 | 
| index 76723d9790c1f7bdbdaf3a6a8c4ec47411c8c7e0..1b27c683de2f1809ef786043d11bbdb91c69a959 100644
 | 
| --- a/source/common/charstr.cpp
 | 
| +++ b/source/common/charstr.cpp
 | 
| @@ -1,6 +1,6 @@
 | 
|  /*
 | 
|  *******************************************************************************
 | 
| -*   Copyright (C) 2010-2011, International Business Machines
 | 
| +*   Copyright (C) 2010-2015, International Business Machines
 | 
|  *   Corporation and others.  All Rights Reserved.
 | 
|  *******************************************************************************
 | 
|  *   file name:  charstr.cpp
 | 
| @@ -16,6 +16,7 @@
 | 
|  #include "charstr.h"
 | 
|  #include "cmemory.h"
 | 
|  #include "cstring.h"
 | 
| +#include "uinvchar.h"
 | 
|  
 | 
|  U_NAMESPACE_BEGIN
 | 
|  
 | 
| @@ -27,6 +28,15 @@ CharString &CharString::copyFrom(const CharString &s, UErrorCode &errorCode) {
 | 
|      return *this;
 | 
|  }
 | 
|  
 | 
| +int32_t CharString::lastIndexOf(char c) const {
 | 
| +    for(int32_t i=len; i>0;) {
 | 
| +        if(buffer[--i]==c) {
 | 
| +            return i;
 | 
| +        }
 | 
| +    }
 | 
| +    return -1;
 | 
| +}
 | 
| +
 | 
|  CharString &CharString::truncate(int32_t newLength) {
 | 
|      if(newLength<0) {
 | 
|          newLength=0;
 | 
| @@ -101,6 +111,13 @@ char *CharString::getAppendBuffer(int32_t minCapacity,
 | 
|  }
 | 
|  
 | 
|  CharString &CharString::appendInvariantChars(const UnicodeString &s, UErrorCode &errorCode) {
 | 
| +    if(U_FAILURE(errorCode)) {
 | 
| +        return *this;
 | 
| +    }
 | 
| +    if (!uprv_isInvariantUnicodeString(s)) {
 | 
| +        errorCode = U_INVARIANT_CONVERSION_ERROR;
 | 
| +        return *this;
 | 
| +    }
 | 
|      if(ensureCapacity(len+s.length()+1, 0, errorCode)) {
 | 
|          len+=s.extract(0, 0x7fffffff, buffer.getAlias()+len, buffer.getCapacity()-len, US_INV);
 | 
|      }
 | 
| @@ -142,4 +159,13 @@ CharString &CharString::appendPathPart(const StringPiece &s, UErrorCode &errorCo
 | 
|      return *this;
 | 
|  }
 | 
|  
 | 
| +CharString &CharString::ensureEndsWithFileSeparator(UErrorCode &errorCode) {
 | 
| +    char c;
 | 
| +    if(U_SUCCESS(errorCode) && len>0 &&
 | 
| +            (c=buffer[len-1])!=U_FILE_SEP_CHAR && c!=U_FILE_ALT_SEP_CHAR) {
 | 
| +        append(U_FILE_SEP_CHAR, errorCode);
 | 
| +    }
 | 
| +    return *this;
 | 
| +}
 | 
| +
 | 
|  U_NAMESPACE_END
 | 
| 
 |