mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-18 15:55:36 +00:00
Give JSObjectOps.setRequiredSlot a JSBool return value so it can propagate errors (part of 245890, r=shaver).
This commit is contained in:
parent
01eeea5e74
commit
1a78cd61c8
@ -2880,8 +2880,7 @@ JS_SetReservedSlot(JSContext *cx, JSObject *obj, uint32 index, jsval v)
|
||||
if (index >= limit && !ReservedSlotIndexOK(cx, obj, clasp, index, limit))
|
||||
return JS_FALSE;
|
||||
slot = JSSLOT_START(clasp) + index;
|
||||
OBJ_SET_REQUIRED_SLOT(cx, obj, slot, v);
|
||||
return JS_TRUE;
|
||||
return OBJ_SET_REQUIRED_SLOT(cx, obj, slot, v);
|
||||
}
|
||||
|
||||
#ifdef JS_THREADSAFE
|
||||
|
@ -3911,7 +3911,7 @@ js_Mark(JSContext *cx, JSObject *obj, void *arg)
|
||||
*/
|
||||
return (uint32) obj->slots[-1];
|
||||
}
|
||||
return JS_MIN(obj->map->freeslot, obj->map->nslots);
|
||||
return JS_MIN(scope->map.freeslot, scope->map.nslots);
|
||||
}
|
||||
|
||||
void
|
||||
@ -3964,7 +3964,7 @@ js_GetRequiredSlot(JSContext *cx, JSObject *obj, uint32 slot)
|
||||
return v;
|
||||
}
|
||||
|
||||
void
|
||||
JSBool
|
||||
js_SetRequiredSlot(JSContext *cx, JSObject *obj, uint32 slot, jsval v)
|
||||
{
|
||||
uint32 nslots, rlimit, i;
|
||||
@ -3986,7 +3986,7 @@ js_SetRequiredSlot(JSContext *cx, JSObject *obj, uint32 slot, jsval v)
|
||||
JS_realloc(cx, obj->slots - 1, (nslots + 1) * sizeof(jsval));
|
||||
if (!newslots) {
|
||||
JS_UNLOCK_OBJ(cx, obj);
|
||||
return;
|
||||
return JS_FALSE;
|
||||
}
|
||||
for (i = 1 + newslots[0]; i <= rlimit; i++)
|
||||
newslots[i] = JSVAL_VOID;
|
||||
@ -3998,6 +3998,7 @@ js_SetRequiredSlot(JSContext *cx, JSObject *obj, uint32 slot, jsval v)
|
||||
|
||||
obj->slots[slot] = v;
|
||||
JS_UNLOCK_OBJ(cx, obj);
|
||||
return JS_TRUE;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
|
@ -103,7 +103,7 @@ struct JSObjectMap {
|
||||
#define OBJ_SET_REQUIRED_SLOT(cx,obj,slot,v) \
|
||||
((obj)->map->ops->setRequiredSlot \
|
||||
? (obj)->map->ops->setRequiredSlot(cx, obj, slot, v) \
|
||||
: (void)0)
|
||||
: JS_TRUE)
|
||||
|
||||
/*
|
||||
* In the original JS engine design, obj->slots pointed to a vector of length
|
||||
@ -456,7 +456,7 @@ js_Clear(JSContext *cx, JSObject *obj);
|
||||
extern jsval
|
||||
js_GetRequiredSlot(JSContext *cx, JSObject *obj, uint32 slot);
|
||||
|
||||
extern void
|
||||
extern JSBool
|
||||
js_SetRequiredSlot(JSContext *cx, JSObject *obj, uint32 slot, jsval v);
|
||||
|
||||
JS_END_EXTERN_C
|
||||
|
@ -487,7 +487,7 @@ typedef jsval
|
||||
(* JS_DLL_CALLBACK JSGetRequiredSlotOp)(JSContext *cx, JSObject *obj,
|
||||
uint32 slot);
|
||||
|
||||
typedef void
|
||||
typedef JSBool
|
||||
(* JS_DLL_CALLBACK JSSetRequiredSlotOp)(JSContext *cx, JSObject *obj,
|
||||
uint32 slot, jsval v);
|
||||
|
||||
|
@ -1024,7 +1024,7 @@ jsj_wrapper_getRequiredSlot(JSContext *cx, JSObject *obj, uint32 slot)
|
||||
return obj->slots[slot];
|
||||
}
|
||||
|
||||
void JS_DLL_CALLBACK
|
||||
JSBool JS_DLL_CALLBACK
|
||||
jsj_wrapper_setRequiredSlot(JSContext *cx, JSObject *obj, uint32 slot, jsval v)
|
||||
{
|
||||
JS_ASSERT(slot < JSJ_SLOT_COUNT);
|
||||
@ -1032,6 +1032,7 @@ jsj_wrapper_setRequiredSlot(JSContext *cx, JSObject *obj, uint32 slot, jsval v)
|
||||
JS_ASSERT(obj->map->nslots == JSJ_SLOT_COUNT);
|
||||
JS_ASSERT(obj->map->freeslot == JSJ_SLOT_COUNT);
|
||||
obj->slots[slot] = v;
|
||||
return JS_TRUE;
|
||||
}
|
||||
|
||||
JSObjectOps JavaObject_ops = {
|
||||
|
@ -658,7 +658,7 @@ jsj_wrapper_destroyObjectMap(JSContext *cx, JSObjectMap *map);
|
||||
extern jsval JS_DLL_CALLBACK
|
||||
jsj_wrapper_getRequiredSlot(JSContext *cx, JSObject *obj, uint32 slot);
|
||||
|
||||
extern void JS_DLL_CALLBACK
|
||||
extern JSBool JS_DLL_CALLBACK
|
||||
jsj_wrapper_setRequiredSlot(JSContext *cx, JSObject *obj, uint32 slot, jsval v);
|
||||
|
||||
#ifdef DEBUG
|
||||
|
Loading…
Reference in New Issue
Block a user