+ unsigned length = str.length();
+
+ if (!length)
+ return;
+
+ if (m_is8Bit) {
+ if (str.is8Bit()) {
+ m_okay &= buffer8.tryAppend(str.characters8(), length);
+ return;
+ }
+ upConvert();
+ }
+ m_okay &= buffer16.tryAppend(str.characters(), length);
+ }
+
+ void upConvert()
+ {
+ ASSERT(m_is8Bit);
+ size_t len = buffer8.size();
+
+ for (size_t i = 0; i < len; i++)
+ buffer16.append(buffer8[i]);
+
+ buffer8.clear();
+ m_is8Bit = false;