Loading core/jni/android_database_CursorWindow.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -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); Loading libs/androidfw/ResourceTypes.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -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; Loading @@ -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; Loading tools/aapt2/util/Util.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading
core/jni/android_database_CursorWindow.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -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); Loading
libs/androidfw/ResourceTypes.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -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; Loading @@ -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; Loading
tools/aapt2/util/Util.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading