diff options
| -rw-r--r-- | runtime/mirror/string.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/runtime/mirror/string.cc b/runtime/mirror/string.cc index 97126cba4c..c64caa82a6 100644 --- a/runtime/mirror/string.cc +++ b/runtime/mirror/string.cc @@ -101,7 +101,8 @@ int32_t String::GetLength() const { uint16_t String::CharAt(int32_t index) const { // TODO: do we need this? Equals is the only caller, and could // bounds check itself. - if (index < 0 || index >= count_) { + DCHECK_GE(count_, 0); // ensures the unsigned comparison is safe. + if (UNLIKELY(static_cast<uint32_t>(index) >= static_cast<uint32_t>(count_))) { Thread* self = Thread::Current(); ThrowLocation throw_location = self->GetCurrentLocationForThrow(); self->ThrowNewExceptionF(throw_location, "Ljava/lang/StringIndexOutOfBoundsException;", |