mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 834766 - GC: Fix some more rooting issues found by static analysis r=sphink
This commit is contained in:
parent
e004aaa82e
commit
7be3fd4539
@ -66,6 +66,9 @@ using namespace js::unicode;
|
||||
|
||||
using mozilla::CheckedInt;
|
||||
|
||||
typedef Rooted<JSLinearString*> RootedLinearString;
|
||||
typedef Handle<JSLinearString*> HandleLinearString;
|
||||
|
||||
static JSLinearString *
|
||||
ArgToRootedString(JSContext *cx, CallArgs &args, unsigned argno)
|
||||
{
|
||||
@ -1854,8 +1857,8 @@ js::str_match(JSContext *cx, unsigned argc, Value *vp)
|
||||
RootedObject array(cx);
|
||||
MatchArgType arg = array.address();
|
||||
RegExpStatics *res = cx->regExpStatics();
|
||||
Value rval;
|
||||
if (!DoMatch(cx, res, str, g.regExp(), MatchCallback, arg, MATCH_ARGS, &rval))
|
||||
RootedValue rval(cx);
|
||||
if (!DoMatch(cx, res, str, g.regExp(), MatchCallback, arg, MATCH_ARGS, rval.address()))
|
||||
return false;
|
||||
|
||||
if (g.regExp().global())
|
||||
@ -2013,8 +2016,8 @@ FindReplaceLength(JSContext *cx, RegExpStatics *res, ReplaceData &rdata, size_t
|
||||
JS_ASSERT(!rdata.elembase->getOps()->lookupProperty);
|
||||
JS_ASSERT(!rdata.elembase->getOps()->getProperty);
|
||||
|
||||
Value match;
|
||||
if (!res->createLastMatch(cx, &match))
|
||||
RootedValue match(cx);
|
||||
if (!res->createLastMatch(cx, match.address()))
|
||||
return false;
|
||||
JSString *str = match.toString();
|
||||
|
||||
@ -2027,8 +2030,8 @@ FindReplaceLength(JSContext *cx, RegExpStatics *res, ReplaceData &rdata, size_t
|
||||
return false;
|
||||
}
|
||||
|
||||
Value v;
|
||||
if (HasDataProperty(cx, rdata.elembase, AtomToId(atom), &v) && v.isString()) {
|
||||
RootedValue v(cx);
|
||||
if (HasDataProperty(cx, rdata.elembase, AtomToId(atom), v.address()) && v.isString()) {
|
||||
rdata.repstr = v.toString()->ensureLinear(cx);
|
||||
if (!rdata.repstr)
|
||||
return false;
|
||||
@ -3158,7 +3161,7 @@ str_slice(JSContext *cx, unsigned argc, Value *vp)
|
||||
* HTML composition aids.
|
||||
*/
|
||||
static bool
|
||||
tagify(JSContext *cx, const char *begin, JSLinearString *param, const char *end,
|
||||
tagify(JSContext *cx, const char *begin, HandleLinearString param, const char *end,
|
||||
CallReceiver call)
|
||||
{
|
||||
JSString *thisstr = ThisToStringForStringProto(cx, call);
|
||||
@ -3231,7 +3234,7 @@ tagify(JSContext *cx, const char *begin, JSLinearString *param, const char *end,
|
||||
static JSBool
|
||||
tagify_value(JSContext *cx, CallArgs args, const char *begin, const char *end)
|
||||
{
|
||||
JSLinearString *param = ArgToRootedString(cx, args, 0);
|
||||
RootedLinearString param(cx, ArgToRootedString(cx, args, 0));
|
||||
if (!param)
|
||||
return false;
|
||||
|
||||
@ -3241,19 +3244,19 @@ tagify_value(JSContext *cx, CallArgs args, const char *begin, const char *end)
|
||||
static JSBool
|
||||
str_bold(JSContext *cx, unsigned argc, Value *vp)
|
||||
{
|
||||
return tagify(cx, "b", NULL, NULL, CallReceiverFromVp(vp));
|
||||
return tagify(cx, "b", NullPtr(), NULL, CallReceiverFromVp(vp));
|
||||
}
|
||||
|
||||
static JSBool
|
||||
str_italics(JSContext *cx, unsigned argc, Value *vp)
|
||||
{
|
||||
return tagify(cx, "i", NULL, NULL, CallReceiverFromVp(vp));
|
||||
return tagify(cx, "i", NullPtr(), NULL, CallReceiverFromVp(vp));
|
||||
}
|
||||
|
||||
static JSBool
|
||||
str_fixed(JSContext *cx, unsigned argc, Value *vp)
|
||||
{
|
||||
return tagify(cx, "tt", NULL, NULL, CallReceiverFromVp(vp));
|
||||
return tagify(cx, "tt", NullPtr(), NULL, CallReceiverFromVp(vp));
|
||||
}
|
||||
|
||||
static JSBool
|
||||
@ -3283,37 +3286,37 @@ str_anchor(JSContext *cx, unsigned argc, Value *vp)
|
||||
static JSBool
|
||||
str_strike(JSContext *cx, unsigned argc, Value *vp)
|
||||
{
|
||||
return tagify(cx, "strike", NULL, NULL, CallReceiverFromVp(vp));
|
||||
return tagify(cx, "strike", NullPtr(), NULL, CallReceiverFromVp(vp));
|
||||
}
|
||||
|
||||
static JSBool
|
||||
str_small(JSContext *cx, unsigned argc, Value *vp)
|
||||
{
|
||||
return tagify(cx, "small", NULL, NULL, CallReceiverFromVp(vp));
|
||||
return tagify(cx, "small", NullPtr(), NULL, CallReceiverFromVp(vp));
|
||||
}
|
||||
|
||||
static JSBool
|
||||
str_big(JSContext *cx, unsigned argc, Value *vp)
|
||||
{
|
||||
return tagify(cx, "big", NULL, NULL, CallReceiverFromVp(vp));
|
||||
return tagify(cx, "big", NullPtr(), NULL, CallReceiverFromVp(vp));
|
||||
}
|
||||
|
||||
static JSBool
|
||||
str_blink(JSContext *cx, unsigned argc, Value *vp)
|
||||
{
|
||||
return tagify(cx, "blink", NULL, NULL, CallReceiverFromVp(vp));
|
||||
return tagify(cx, "blink", NullPtr(), NULL, CallReceiverFromVp(vp));
|
||||
}
|
||||
|
||||
static JSBool
|
||||
str_sup(JSContext *cx, unsigned argc, Value *vp)
|
||||
{
|
||||
return tagify(cx, "sup", NULL, NULL, CallReceiverFromVp(vp));
|
||||
return tagify(cx, "sup", NullPtr(), NULL, CallReceiverFromVp(vp));
|
||||
}
|
||||
|
||||
static JSBool
|
||||
str_sub(JSContext *cx, unsigned argc, Value *vp)
|
||||
{
|
||||
return tagify(cx, "sub", NULL, NULL, CallReceiverFromVp(vp));
|
||||
return tagify(cx, "sub", NullPtr(), NULL, CallReceiverFromVp(vp));
|
||||
}
|
||||
#endif /* JS_HAS_STR_HTML_HELPERS */
|
||||
|
||||
@ -4280,8 +4283,8 @@ str_decodeURI(JSContext *cx, unsigned argc, Value *vp)
|
||||
if (!str)
|
||||
return false;
|
||||
|
||||
Value result;
|
||||
if (!Decode(cx, str, js_uriReservedPlusPound_ucstr, &result))
|
||||
RootedValue result(cx);
|
||||
if (!Decode(cx, str, js_uriReservedPlusPound_ucstr, result.address()))
|
||||
return false;
|
||||
|
||||
args.rval().set(result);
|
||||
|
@ -2501,7 +2501,7 @@ TypedArrayTemplate<double>::copyIndexToValue(JSObject *tarray, uint32_t index,
|
||||
}
|
||||
|
||||
JSBool
|
||||
DataViewObject::construct(JSContext *cx, JSObject *bufobj, const CallArgs &args, JSObject *proto)
|
||||
DataViewObject::construct(JSContext *cx, JSObject *bufobj, const CallArgs &args, HandleObject proto)
|
||||
{
|
||||
if (!bufobj->isArrayBuffer()) {
|
||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_NOT_EXPECTED_TYPE,
|
||||
@ -2585,7 +2585,7 @@ DataViewObject::class_constructor(JSContext *cx, unsigned argc, Value *vp)
|
||||
return true;
|
||||
}
|
||||
|
||||
return construct(cx, bufobj, args, NULL);
|
||||
return construct(cx, bufobj, args, NullPtr());
|
||||
}
|
||||
|
||||
/* static */ bool
|
||||
|
@ -339,7 +339,7 @@ private:
|
||||
static JSBool class_constructor(JSContext *cx, unsigned argc, Value *vp);
|
||||
static JSBool constructWithProto(JSContext *cx, unsigned argc, Value *vp);
|
||||
static JSBool construct(JSContext *cx, JSObject *bufobj, const CallArgs &args,
|
||||
JSObject *proto);
|
||||
HandleObject proto);
|
||||
|
||||
static inline DataViewObject *
|
||||
create(JSContext *cx, uint32_t byteOffset, uint32_t byteLength,
|
||||
|
@ -276,7 +276,7 @@ WeakMap_set_impl(JSContext *cx, CallArgs args)
|
||||
if (!key)
|
||||
return false;
|
||||
|
||||
Value value = (args.length() > 1) ? args[1] : UndefinedValue();
|
||||
RootedValue value(cx, (args.length() > 1) ? args[1] : UndefinedValue());
|
||||
|
||||
Rooted<JSObject*> thisObj(cx, &args.thisv().toObject());
|
||||
ObjectValueMap *map = GetObjectMap(thisObj);
|
||||
@ -322,8 +322,9 @@ WeakMap_set(JSContext *cx, unsigned argc, Value *vp)
|
||||
}
|
||||
|
||||
JS_FRIEND_API(JSBool)
|
||||
JS_NondeterministicGetWeakMapKeys(JSContext *cx, JSObject *obj, JSObject **ret)
|
||||
JS_NondeterministicGetWeakMapKeys(JSContext *cx, JSObject *objArg, JSObject **ret)
|
||||
{
|
||||
RootedObject obj(cx, objArg);
|
||||
obj = UnwrapObject(obj);
|
||||
if (!obj || !obj->isWeakMap()) {
|
||||
*ret = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user