Give JSObjectOps.setRequiredSlot a JSBool return value so it can propagate errors (part of 245890, r=shaver).

This commit is contained in:
brendan%mozilla.org 2004-06-12 01:50:09 +00:00
parent 01eeea5e74
commit 1a78cd61c8
6 changed files with 11 additions and 10 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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 = {

View File

@ -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