From 5fbbc27dfd9932991da798429640bd1f95c97575 Mon Sep 17 00:00:00 2001 From: Ykkrosh Date: Mon, 23 Aug 2010 14:30:13 +0000 Subject: [PATCH] Fix crash when calling JSFastNatives with too few arguments (they don't guarantee to give the number requested in the definition) This was SVN commit r8028. --- source/scriptinterface/ScriptInterface.cpp | 24 +++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/source/scriptinterface/ScriptInterface.cpp b/source/scriptinterface/ScriptInterface.cpp index 0927b9511b..f01bf3f08a 100644 --- a/source/scriptinterface/ScriptInterface.cpp +++ b/source/scriptinterface/ScriptInterface.cpp @@ -117,8 +117,14 @@ JSBool print(JSContext* cx, uintN argc, jsval* vp) return JS_TRUE; } -JSBool logmsg(JSContext* cx, uintN UNUSED(argc), jsval* vp) +JSBool logmsg(JSContext* cx, uintN argc, jsval* vp) { + if (argc < 1) + { + JS_SET_RVAL(cx, vp, JSVAL_VOID); + return JS_TRUE; + } + std::wstring str; if (!ScriptInterface::FromJSVal(cx, JS_ARGV(cx, vp)[0], str)) return JS_FALSE; @@ -127,8 +133,14 @@ JSBool logmsg(JSContext* cx, uintN UNUSED(argc), jsval* vp) return JS_TRUE; } -JSBool warn(JSContext* cx, uintN UNUSED(argc), jsval* vp) +JSBool warn(JSContext* cx, uintN argc, jsval* vp) { + if (argc < 1) + { + JS_SET_RVAL(cx, vp, JSVAL_VOID); + return JS_TRUE; + } + std::wstring str; if (!ScriptInterface::FromJSVal(cx, JS_ARGV(cx, vp)[0], str)) return JS_FALSE; @@ -137,8 +149,14 @@ JSBool warn(JSContext* cx, uintN UNUSED(argc), jsval* vp) return JS_TRUE; } -JSBool error(JSContext* cx, uintN UNUSED(argc), jsval* vp) +JSBool error(JSContext* cx, uintN argc, jsval* vp) { + if (argc < 1) + { + JS_SET_RVAL(cx, vp, JSVAL_VOID); + return JS_TRUE; + } + std::wstring str; if (!ScriptInterface::FromJSVal(cx, JS_ARGV(cx, vp)[0], str)) return JS_FALSE;