Don't assume that JS_ValueToString is infallible. bug 327897, r=brendan

This commit is contained in:
mrbkap%gmail.com 2006-02-22 03:51:09 +00:00
Родитель 20f04c4bc5
Коммит e5f4ae3a79
1 изменённых файлов: 16 добавлений и 8 удалений

Просмотреть файл

@ -1511,6 +1511,7 @@ static JSBool
fun_call(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
jsval fval, *sp, *oldsp;
JSString *str;
JSObject *tmp;
void *mark;
uintN i;
@ -1522,10 +1523,13 @@ fun_call(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
fval = argv[-1];
if (!JSVAL_IS_FUNCTION(cx, fval)) {
JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL,
JSMSG_INCOMPATIBLE_PROTO,
js_Function_str, call_str,
JS_GetStringBytes(JS_ValueToString(cx, fval)));
str = JS_ValueToString(cx, fval);
if (str) {
JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL,
JSMSG_INCOMPATIBLE_PROTO,
js_Function_str, call_str,
JS_GetStringBytes(str));
}
return JS_FALSE;
}
@ -1571,6 +1575,7 @@ static JSBool
fun_apply(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
jsval fval, *sp, *oldsp;
JSString *str;
JSObject *aobj;
jsuint length;
void *mark;
@ -1588,10 +1593,13 @@ fun_apply(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
fval = argv[-1];
if (!JSVAL_IS_FUNCTION(cx, fval)) {
JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL,
JSMSG_INCOMPATIBLE_PROTO,
js_Function_str, "apply",
JS_GetStringBytes(JS_ValueToString(cx, fval)));
str = JS_ValueToString(cx, fval);
if (str) {
JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL,
JSMSG_INCOMPATIBLE_PROTO,
js_Function_str, "apply",
JS_GetStringBytes(str));
}
return JS_FALSE;
}