Bug 552548 - Use JSString accessors in ctypes instead of JS_GetStringChars. r=benjamn

This commit is contained in:
Dan Witte 2010-04-09 11:52:41 -07:00
Родитель f12009edd7
Коммит 0bdbd179cf
2 изменённых файлов: 20 добавлений и 31 удалений

Просмотреть файл

@ -1422,8 +1422,8 @@ StringToInteger(JSContext* cx, JSString* string, IntegerType* result)
{
JS_STATIC_ASSERT(numeric_limits<IntegerType>::is_exact);
const jschar* cp = JS_GetStringChars(string);
const jschar* end = cp + JS_GetStringLength(string);
const jschar* cp = string->chars();
const jschar* end = cp + string->length();
if (cp == end)
return false;
@ -1664,13 +1664,10 @@ ImplicitConvert(JSContext* cx,
type result; \
if (JSVAL_IS_STRING(val)) { \
JSString* str = JSVAL_TO_STRING(val); \
if (JS_GetStringLength(str) != 1) \
if (str->length() != 1) \
return TypeError(cx, #name, val); \
\
jschar c = *JS_GetStringChars(str); \
result = c; \
if (jschar(result) != c) \
return TypeError(cx, #name, val); \
result = str->chars()[0]; \
\
} else if (!jsvalToInteger(cx, val, &result)) { \
return TypeError(cx, #name, val); \
@ -1715,8 +1712,8 @@ ImplicitConvert(JSContext* cx,
// which the caller assumes ownership of.
// TODO: Extend this so we can safely convert strings at other times also.
JSString* sourceString = JSVAL_TO_STRING(val);
const jschar* sourceChars = JS_GetStringChars(sourceString);
size_t sourceLength = JS_GetStringLength(sourceString);
const jschar* sourceChars = sourceString->chars();
size_t sourceLength = sourceString->length();
switch (CType::GetTypeCode(cx, baseType)) {
case TYPE_char:
@ -1778,8 +1775,8 @@ ImplicitConvert(JSContext* cx,
if (JSVAL_IS_STRING(val)) {
JSString* sourceString = JSVAL_TO_STRING(val);
const jschar* sourceChars = JS_GetStringChars(sourceString);
size_t sourceLength = JS_GetStringLength(sourceString);
const jschar* sourceChars = sourceString->chars();
size_t sourceLength = sourceString->length();
switch (CType::GetTypeCode(cx, baseType)) {
case TYPE_char:
@ -1901,12 +1898,9 @@ ImplicitConvert(JSContext* cx,
if (!field)
return false;
JSString* nameStr = JSVAL_TO_STRING(fieldVal.value());
const jschar* name = JS_GetStringChars(nameStr);
size_t namelen = JS_GetStringLength(nameStr);
JSString* name = JSVAL_TO_STRING(fieldVal.value());
js::AutoValueRooter prop(cx);
if (!JS_GetUCProperty(cx, obj, name, namelen, prop.addr()))
if (!JS_GetUCProperty(cx, obj, name->chars(), name->length(), prop.addr()))
return false;
// Convert the field via ImplicitConvert().
@ -3497,8 +3491,8 @@ ArrayType::ConstructData(JSContext* cx,
// We were given a string. Size the array to the appropriate length,
// including space for the terminator.
JSString* sourceString = JSVAL_TO_STRING(argv[0]);
const jschar* sourceChars = JS_GetStringChars(sourceString);
size_t sourceLength = JS_GetStringLength(sourceString);
const jschar* sourceChars = sourceString->chars();
size_t sourceLength = sourceString->length();
switch (CType::GetTypeCode(cx, baseType)) {
case TYPE_char:
@ -3798,9 +3792,7 @@ ExtractStructField(JSContext* cx, jsval val, FieldInfo* field)
AppendString(field->mName, name);
js::AutoValueRooter propVal(cx);
const jschar* nameChars = JS_GetStringChars(name);
size_t namelen = JS_GetStringLength(name);
if (!JS_GetUCProperty(cx, obj, nameChars, namelen, propVal.addr()))
if (!JS_GetUCProperty(cx, obj, name->chars(), name->length(), propVal.addr()))
return false;
if (JSVAL_IS_PRIMITIVE(propVal.value()) ||
@ -4371,9 +4363,9 @@ IsEllipsis(jsval v)
if (!JSVAL_IS_STRING(v))
return false;
JSString* str = JSVAL_TO_STRING(v);
if (JS_GetStringLength(str) != 3)
if (str->length() != 3)
return false;
jschar* chars = JS_GetStringChars(str), dot('.');
const jschar* chars = str->chars(), dot('.');
return (chars[0] == dot &&
chars[1] == dot &&
chars[2] == dot);

Просмотреть файл

@ -138,9 +138,7 @@ void
AppendString(Vector<jschar, N, AP> &v, JSString* str)
{
JS_ASSERT(str);
const jschar* chars = JS_GetStringChars(str);
size_t length = JS_GetStringLength(str);
v.append(chars, length);
v.append(str->chars(), str->length());
}
template <class T, size_t N, class AP, size_t ArrayLength>
@ -167,7 +165,7 @@ PrependString(Vector<jschar, N, AP> &v, JSString* str)
{
JS_ASSERT(str);
size_t vlen = v.length();
size_t alen = JS_GetStringLength(str);
size_t alen = str->length();
if (!v.resize(vlen + alen))
return;
@ -175,7 +173,7 @@ PrependString(Vector<jschar, N, AP> &v, JSString* str)
memmove(v.begin() + alen, v.begin(), vlen * sizeof(jschar));
// Copy data to insert.
memcpy(v.begin(), JS_GetStringChars(str), alen * sizeof(jschar));
memcpy(v.begin(), str->chars(), alen * sizeof(jschar));
}
template <class T, size_t N, size_t M, class AP>
@ -193,12 +191,11 @@ bool
StringsEqual(Vector<jschar, N, AP> &v, JSString* str)
{
JS_ASSERT(str);
size_t length = JS_GetStringLength(str);
size_t length = str->length();
if (v.length() != length)
return false;
const jschar* chars = JS_GetStringChars(str);
return memcmp(v.begin(), chars, length * sizeof(jschar)) == 0;
return memcmp(v.begin(), str->chars(), length * sizeof(jschar)) == 0;
}
/*******************************************************************************