Bug 1027528 part 2 - Make AtomizeString, StringBuffer::finishAtom handle Latin1 strings. r=luke

This commit is contained in:
Jan de Mooij 2014-06-20 12:39:42 +02:00
parent f892333a69
commit 16c5b87a65
2 changed files with 12 additions and 3 deletions

View File

@ -430,11 +430,14 @@ js::AtomizeString(ExclusiveContext *cx, JSString *str,
return &atom;
}
const jschar *chars = str->getChars(cx);
if (!chars)
JSLinearString *linear = str->ensureLinear(cx);
if (!linear)
return nullptr;
return AtomizeAndCopyChars(cx, chars, str->length(), ib);
JS::AutoCheckCannotGC nogc;
return linear->hasLatin1Chars()
? AtomizeAndCopyChars(cx, linear->latin1Chars(nogc), linear->length(), ib)
: AtomizeAndCopyChars(cx, linear->twoByteChars(nogc), linear->length(), ib);
}
JSAtom *

View File

@ -118,6 +118,12 @@ StringBuffer::finishAtom()
if (len == 0)
return cx->names().empty;
if (isLatin1()) {
JSAtom *atom = AtomizeChars(cx, latin1Chars().begin(), len);
latin1Chars().clear();
return atom;
}
JSAtom *atom = AtomizeChars(cx, twoByteChars().begin(), len);
twoByteChars().clear();
return atom;