Revert "libutils/Unicode.cpp: Correct length computation and add checks for utf16->utf8"
This reverts commit 53473c160713b8605e262bf212b0cf5e9a19a4d6.
Change-Id: I27379317e08ecbd5e3b95b7ece58194838ab6c21
diff --git a/libutils/String8.cpp b/libutils/String8.cpp
index cad401f..bb06825 100644
--- a/libutils/String8.cpp
+++ b/libutils/String8.cpp
@@ -102,21 +102,20 @@
{
if (len == 0) return getEmptyString();
- // Allow for closing '\0'
- const ssize_t resultStrLen = utf16_to_utf8_length(in, len) + 1;
- if (resultStrLen < 1) {
+ const ssize_t bytes = utf16_to_utf8_length(in, len);
+ if (bytes < 0) {
return getEmptyString();
}
- SharedBuffer* buf = SharedBuffer::alloc(resultStrLen);
+ SharedBuffer* buf = SharedBuffer::alloc(bytes+1);
ALOG_ASSERT(buf, "Unable to allocate shared buffer");
if (!buf) {
return getEmptyString();
}
- char* resultStr = (char*)buf->data();
- utf16_to_utf8(in, len, resultStr, resultStrLen);
- return resultStr;
+ char* str = (char*)buf->data();
+ utf16_to_utf8(in, len, str);
+ return str;
}
static char* allocFromUTF32(const char32_t* in, size_t len)
@@ -125,21 +124,21 @@
return getEmptyString();
}
- const ssize_t resultStrLen = utf32_to_utf8_length(in, len) + 1;
- if (resultStrLen < 1) {
+ const ssize_t bytes = utf32_to_utf8_length(in, len);
+ if (bytes < 0) {
return getEmptyString();
}
- SharedBuffer* buf = SharedBuffer::alloc(resultStrLen);
+ SharedBuffer* buf = SharedBuffer::alloc(bytes+1);
ALOG_ASSERT(buf, "Unable to allocate shared buffer");
if (!buf) {
return getEmptyString();
}
- char* resultStr = (char*) buf->data();
- utf32_to_utf8(in, len, resultStr, resultStrLen);
+ char* str = (char*) buf->data();
+ utf32_to_utf8(in, len, str);
- return resultStr;
+ return str;
}
// ---------------------------------------------------------------------------