зеркало из https://github.com/mozilla/gecko-dev.git
Bug 552548 - Use JSString accessors in ctypes instead of JS_GetStringChars. r=benjamn
This commit is contained in:
Родитель
f12009edd7
Коммит
0bdbd179cf
|
@ -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;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
|
|
Загрузка…
Ссылка в новой задаче