# HG changeset patch # Parent 27e3b1aba5b7bb95afe083cdeb7781a751ac92f4 # User timeless@mozdev.org Bug 332176 eval still uses call site line number as offset for eval'ed code in the year 2010 diff --git a/content/base/src/nsScriptLoader.cpp b/content/base/src/nsScriptLoader.cpp --- a/content/base/src/nsScriptLoader.cpp +++ b/content/base/src/nsScriptLoader.cpp @@ -615,7 +615,10 @@ nsScriptLoader::ProcessScriptElement(nsI request->mIsInline = PR_TRUE; request->mURI = mDocument->GetDocumentURI(); - request->mLineNo = aElement->GetScriptLineNumber(); + PRUint32 lineNo = aElement->GetScriptLineNumber(); + if (!lineNo) + lineNo = 1; + request->mLineNo = lineNo; // If we've got existing pending requests, add ourselves // to this list. diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp --- a/dom/base/nsGlobalWindow.cpp +++ b/dom/base/nsGlobalWindow.cpp @@ -8543,9 +8543,9 @@ nsGlobalWindow::RunTimeout(nsTimeout *aT handler->GetLocation(&filename, &lineNo); PRBool is_undefined; - scx->EvaluateString(nsDependentString(script), + scx->EvaluateString(nsDependentString(script), GetScriptGlobal(handler->GetScriptTypeID()), - timeout->mPrincipal, filename, lineNo, + timeout->mPrincipal, filename, 1, handler->GetScriptVersion(), nsnull, &is_undefined); } else { diff --git a/dom/src/threads/nsDOMWorkerTimeout.cpp b/dom/src/threads/nsDOMWorkerTimeout.cpp --- a/dom/src/threads/nsDOMWorkerTimeout.cpp +++ b/dom/src/threads/nsDOMWorkerTimeout.cpp @@ -148,7 +148,6 @@ nsDOMWorkerTimeout::ExpressionCallback:: jsval* aArgv, JSContext* aCx, nsresult* aRv) -: mLineNumber(0) { MOZ_COUNT_CTOR(nsDOMWorkerTimeout::ExpressionCallback); @@ -172,7 +171,6 @@ nsDOMWorkerTimeout::ExpressionCallback:: PRUint32 lineNumber; if (nsJSUtils::GetCallingLocation(aCx, &fileName, &lineNumber, nsnull)) { mFileName.Assign(fileName); - mLineNumber = lineNumber; } *aRv = NS_OK; @@ -204,8 +202,8 @@ nsDOMWorkerTimeout::ExpressionCallback:: jsval rval; PRBool success = JS_EvaluateUCScriptForPrincipals(aCx, global, principal, string, stringLength, - mFileName.get(), - mLineNumber, &rval); + mFileName.get(), 1, + &rval); if (!success) { return NS_ERROR_FAILURE; } diff --git a/dom/src/threads/nsDOMWorkerTimeout.h b/dom/src/threads/nsDOMWorkerTimeout.h --- a/dom/src/threads/nsDOMWorkerTimeout.h +++ b/dom/src/threads/nsDOMWorkerTimeout.h @@ -165,7 +165,6 @@ private: protected: nsAutoJSValHolder mExpression; nsCString mFileName; - PRUint32 mLineNumber; }; // Hold this object alive! diff --git a/extensions/jssh/nsJSSh.cpp b/extensions/jssh/nsJSSh.cpp --- a/extensions/jssh/nsJSSh.cpp +++ b/extensions/jssh/nsJSSh.cpp @@ -683,7 +683,7 @@ NS_IMETHODIMP nsJSSh::ExecuteBuffer() return NS_ERROR_FAILURE; } - JSScript *script = JS_CompileScriptForPrincipals(mJSContext, mContextObj, jsprincipals, mBuffer, mBufferPtr, "interactive", 0); + JSScript *script = JS_CompileScriptForPrincipals(mJSContext, mContextObj, jsprincipals, mBuffer, mBufferPtr, "interactive", 1); if (script) { jsval result; diff --git a/extensions/pref/autoconfig/src/nsJSConfigTriggers.cpp b/extensions/pref/autoconfig/src/nsJSConfigTriggers.cpp --- a/extensions/pref/autoconfig/src/nsJSConfigTriggers.cpp +++ b/extensions/pref/autoconfig/src/nsJSConfigTriggers.cpp @@ -224,7 +224,7 @@ nsresult EvaluateAdminConfigScript(const JS_BeginRequest(autoconfig_cx); ok = JS_EvaluateScript(autoconfig_cx, autoconfig_glob, - js_buffer, length, filename, 0, &result); + js_buffer, length, filename, 1, &result); JS_EndRequest(autoconfig_cx); JS_MaybeGC(autoconfig_cx); diff --git a/js/src/jsapi-tests/testXDR.cpp b/js/src/jsapi-tests/testXDR.cpp --- a/js/src/jsapi-tests/testXDR.cpp +++ b/js/src/jsapi-tests/testXDR.cpp @@ -4,6 +4,7 @@ BEGIN_TEST(testXDR_bug506491) { + int lineno = __LINE__ + 2; const char *s = "function makeClosure(s, name, value) {\n" " eval(s);\n" @@ -12,7 +13,7 @@ BEGIN_TEST(testXDR_bug506491) "var f = makeClosure('0;', 'status', 'ok');\n"; // compile - JSScript *script = JS_CompileScript(cx, global, s, strlen(s), __FILE__, __LINE__); + JSScript *script = JS_CompileScript(cx, global, s, strlen(s), __FILE__, lineno); CHECK(script); JSObject *scrobj = JS_NewScriptObject(cx, script); CHECK(scrobj); diff --git a/js/src/jsfun.cpp b/js/src/jsfun.cpp --- a/js/src/jsfun.cpp +++ b/js/src/jsfun.cpp @@ -2288,7 +2288,7 @@ Function(JSContext *cx, JSObject *obj, u } /* Initialize a tokenstream that reads from the given string. */ - if (!ts.init(collected_args, args_length, NULL, filename, lineno)) { + if (!ts.init(collected_args, args_length, NULL, filename, 1)) { JS_ARENA_RELEASE(&cx->tempPool, mark); return JS_FALSE; } @@ -2365,7 +2365,7 @@ Function(JSContext *cx, JSObject *obj, u return Compiler::compileFunctionBody(cx, fun, principals, str->chars(), str->length(), - filename, lineno); + filename, 1); } JSObject * diff --git a/js/src/jsobj.cpp b/js/src/jsobj.cpp --- a/js/src/jsobj.cpp +++ b/js/src/jsobj.cpp @@ -1362,7 +1362,7 @@ obj_eval(JSContext *cx, uintN argc, jsva principals, TCF_COMPILE_N_GO | TCF_NEED_MUTABLE_SCRIPT, str->chars(), str->length(), - NULL, file, line, str, staticLevel); + NULL, file, 1, str, staticLevel); if (!script) return JS_FALSE; } diff --git a/js/src/shell/js.cpp b/js/src/shell/js.cpp --- a/js/src/shell/js.cpp +++ b/js/src/shell/js.cpp @@ -1466,7 +1466,7 @@ TrapHandler(JSContext *cx, JSScript *scr caller = JS_GetScriptedCaller(cx, NULL); if (!JS_EvaluateUCInStackFrame(cx, caller, JS_GetStringChars(str), JS_GetStringLength(str), - caller->script->filename, caller->script->lineno, + caller->script->filename, 1, rval)) { return JSTRAP_ERROR; } @@ -3021,9 +3021,7 @@ EvalInContext(JSContext *cx, JSObject *o goto out; } ok = JS_EvaluateUCScript(scx, sobj, src, srclen, - fp->script->filename, - JS_PCToLineNumber(cx, fp->script, - fp->regs->pc), + fp->script->filename, 1, rval); } @@ -3078,9 +3076,7 @@ EvalInFrame(JSContext *cx, uintN argc, j oldfp = JS_SaveFrameChain(cx); JSBool ok = JS_EvaluateUCInStackFrame(cx, fp, str->chars(), str->length(), - fp->script->filename, - JS_PCToLineNumber(cx, fp->script, - fp->regs->pc), + fp->script->filename, 1, vp); if (saveCurrent) @@ -3750,7 +3746,7 @@ Compile(JSContext *cx, uintN argc, jsval JSString *scriptContents = JSVAL_TO_STRING(arg0); JSScript *result = JS_CompileUCScript(cx, NULL, JS_GetStringCharsZ(cx, scriptContents), - JS_GetStringLength(scriptContents), "", 0); + JS_GetStringLength(scriptContents), "", 1); if (!result) return JS_FALSE; @@ -4833,7 +4829,7 @@ Evaluate(JSContext *cx, JSObject *obj, u /* function evaluate(source, filename, lineno) { ... } */ JSString *source; const char *filename = ""; - jsuint lineno = 0; + jsuint lineno = 1; uint32 oldopts; JSBool ok; @@ -4953,7 +4949,7 @@ NewGlobalObject(JSContext *cx) if (!JS_EvaluateScript(cx, glob, Object_prototype, sizeof Object_prototype - 1, - NULL, 0, &v)) { + NULL, 1, &v)) { return NULL; } if (!JS_DefineFunction(cx, JSVAL_TO_OBJECT(v), "__defineProperty__", diff --git a/js/src/xpconnect/src/xpccomponents.cpp b/js/src/xpconnect/src/xpccomponents.cpp --- a/js/src/xpconnect/src/xpccomponents.cpp +++ b/js/src/xpconnect/src/xpccomponents.cpp @@ -3633,7 +3633,7 @@ xpc_EvalInSandbox(JSContext *cx, JSObjec jsPrincipals, reinterpret_cast (PromiseFlatString(source).get()), - source.Length(), filename, lineNo, + source.Length(), filename, 1, rval); if (ok && returnStringOnly && !(JSVAL_IS_VOID(*rval))) { ok = !!(str = JS_ValueToString(sandcx->GetJSContext(), *rval)); diff --git a/modules/plugin/base/src/nsNPAPIPlugin.cpp b/modules/plugin/base/src/nsNPAPIPlugin.cpp --- a/modules/plugin/base/src/nsNPAPIPlugin.cpp +++ b/modules/plugin/base/src/nsNPAPIPlugin.cpp @@ -1615,7 +1615,7 @@ _evaluate(NPP npp, NPObject* npobj, NPSt npp, npobj, script->UTF8Characters)); nsresult rv = scx->EvaluateStringWithValue(utf16script, obj, principal, - spec, 0, 0, rval, nsnull); + spec, 1, 0, rval, nsnull); return NS_SUCCEEDED(rv) && (!result || JSValToNPVariant(npp, cx, *rval, result)); diff --git a/security/manager/ssl/src/nsCrypto.cpp b/security/manager/ssl/src/nsCrypto.cpp --- a/security/manager/ssl/src/nsCrypto.cpp +++ b/security/manager/ssl/src/nsCrypto.cpp @@ -2199,7 +2199,7 @@ nsCryptoRunnable::Run() if (JS_EvaluateScriptForPrincipals(cx, m_args->m_scope, principals, m_args->m_jsCallback, strlen(m_args->m_jsCallback), - nsnull, 0, + nsnull, 1, &retval) != JS_TRUE) { rv = NS_ERROR_FAILURE; }