abort();
}
JS_FreeAtom(ctx, atom1);
+ if (JS_IsException(val))
+ return -1;
if (atom == JS_ATOM_Symbol_toPrimitive) {
/* Symbol.toPrimitive functions are not writable */
prop_flags = JS_PROP_CONFIGURABLE;
/* Function.prototype[Symbol.hasInstance] is not writable nor configurable */
prop_flags = 0;
}
- JS_DefineAutoInitProperty(ctx, obj, atom, JS_AUTOINIT_ID_PROP,
- (void *)e, prop_flags);
+ if (JS_DefineAutoInitProperty(ctx, obj, atom, JS_AUTOINIT_ID_PROP,
+ (void *)e, prop_flags) < 0)
+ return -1;
return 0;
case JS_DEF_CGETSET: /* XXX: use autoinit again ? */
case JS_DEF_CGETSET_MAGIC:
getter = JS_NewCFunction2(ctx, e->u.getset.get.generic,
buf, 0, e->def_type == JS_DEF_CGETSET_MAGIC ? JS_CFUNC_getter_magic : JS_CFUNC_getter,
e->magic);
+ if (JS_IsException(getter))
+ return -1;
}
setter = JS_UNDEFINED;
if (e->u.getset.set.generic) {
setter = JS_NewCFunction2(ctx, e->u.getset.set.generic,
buf, 1, e->def_type == JS_DEF_CGETSET_MAGIC ? JS_CFUNC_setter_magic : JS_CFUNC_setter,
e->magic);
+ if (JS_IsException(setter)) {
+ JS_FreeValue(ctx, getter);
+ return -1;
+ }
}
- JS_DefinePropertyGetSet(ctx, obj, atom, getter, setter, prop_flags);
+ if (JS_DefinePropertyGetSet(ctx, obj, atom, getter, setter, prop_flags) < 0)
+ return -1;
return 0;
}
break;
break;
case JS_DEF_PROP_STRING:
case JS_DEF_OBJECT:
- JS_DefineAutoInitProperty(ctx, obj, atom, JS_AUTOINIT_ID_PROP,
- (void *)e, prop_flags);
+ if (JS_DefineAutoInitProperty(ctx, obj, atom, JS_AUTOINIT_ID_PROP,
+ (void *)e, prop_flags) < 0)
+ return -1;
return 0;
default:
abort();
}
- JS_DefinePropertyValue(ctx, obj, atom, val, prop_flags);
+ if (JS_DefinePropertyValue(ctx, obj, atom, val, prop_flags) < 0)
+ return -1;
return 0;
}