Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e55e65c9 authored by Sergio Giro's avatar Sergio Giro Committed by Android (Google) Code Review
Browse files

Merge "Unicode: specify destination length in utf8_to_utf16 methods"

parents e212afa0 03b95c7d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -280,7 +280,7 @@ static void fillCharArrayBufferUTF(JNIEnv* env, jobject bufferObj,
        if (size) {
            jchar* data = static_cast<jchar*>(env->GetPrimitiveArrayCritical(dataObj, NULL));
            utf8_to_utf16_no_null_terminator(reinterpret_cast<const uint8_t*>(str), len,
                    reinterpret_cast<char16_t*>(data));
                    reinterpret_cast<char16_t*>(data), (size_t) size);
            env->ReleasePrimitiveArrayCritical(dataObj, data, 0);
        }
        env->SetIntField(bufferObj, gCharArrayBufferClassInfo.sizeCopied, size);
+4 −4
Original line number Diff line number Diff line
@@ -776,7 +776,7 @@ const char16_t* ResStringPool::stringAt(size_t idx, size_t* u16len) const
                    if (kDebugStringPoolNoisy) {
                        ALOGI("Caching UTF8 string: %s", u8str);
                    }
                    utf8_to_utf16(u8str, u8len, u16str);
                    utf8_to_utf16(u8str, u8len, u16str, *u16len + 1);
                    mCache[idx] = u16str;
                    return u16str;
                } else {
@@ -883,7 +883,8 @@ ssize_t ResStringPool::indexOfString(const char16_t* str, size_t strLen) const
            // the ordering, we need to convert strings in the pool to UTF-16.
            // But we don't want to hit the cache, so instead we will have a
            // local temporary allocation for the conversions.
            char16_t* convBuffer = (char16_t*)malloc(strLen+4);
            size_t convBufferLen = strLen + 4;
            char16_t* convBuffer = (char16_t*)calloc(convBufferLen, sizeof(char16_t));
            ssize_t l = 0;
            ssize_t h = mHeader->stringCount-1;

@@ -893,8 +894,7 @@ ssize_t ResStringPool::indexOfString(const char16_t* str, size_t strLen) const
                const uint8_t* s = (const uint8_t*)string8At(mid, &len);
                int c;
                if (s != NULL) {
                    char16_t* end = utf8_to_utf16_n(s, len, convBuffer, strLen+3);
                    *end = 0;
                    char16_t* end = utf8_to_utf16(s, len, convBuffer, convBufferLen);
                    c = strzcmp16(convBuffer, end-convBuffer, str, strLen);
                } else {
                    c = -1;
+5 −1
Original line number Diff line number Diff line
@@ -434,7 +434,11 @@ std::u16string utf8ToUtf16(const StringPiece& utf8) {

    std::u16string utf16;
    utf16.resize(utf16Length);
    utf8_to_utf16(reinterpret_cast<const uint8_t*>(utf8.data()), utf8.length(), &*utf16.begin());
    utf8_to_utf16(
            reinterpret_cast<const uint8_t*>(utf8.data()),
            utf8.length(),
            &*utf16.begin(),
            (size_t) utf16Length + 1);
    return utf16;
}