/* * The given JSErrorReport object have been zeroed and must not outlive * cx->fp() (otherwise owned fields may become invalid). */ static void PopulateReportBlame(JSContext* cx, JSErrorReport* report) { JSCompartment* compartment = cx->compartment(); if (!compartment) return; /* * Walk stack until we find a frame that is associated with a non-builtin * rather than a builtin frame and which we're allowed to know about. */ NonBuiltinFrameIter iter(cx, compartment->principals()); if (iter.done()) return; report->filename = iter.filename(); report->lineno = iter.computeLine(&report->column); // XXX: Make the column 1-based as in other browsers, instead of 0-based // which is how SpiderMonkey stores it internally. This will be // unnecessary once bug 1144340 is fixed. report->column++; report->isMuted = iter.mutedErrors(); }