зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1134198 - Don't call Debugger::slowPathOnLeaveFrame on frames no longer in Debugger frame maps. (r=jimb)
This commit is contained in:
Родитель
086b9abe47
Коммит
94ccbb0332
|
@ -606,6 +606,13 @@ Debugger::slowPathOnLeaveFrame(JSContext* cx, AbstractFramePtr frame, bool frame
|
||||||
{
|
{
|
||||||
Handle<GlobalObject*> global = cx->global();
|
Handle<GlobalObject*> global = cx->global();
|
||||||
|
|
||||||
|
// The onPop handler and associated clean up logic should not run multiple
|
||||||
|
// times on the same frame. If slowPathOnLeaveFrame has already been
|
||||||
|
// called, the frame will not be present in the Debugger frame maps.
|
||||||
|
FrameRange frameRange(frame, global);
|
||||||
|
if (frameRange.empty())
|
||||||
|
return frameOk;
|
||||||
|
|
||||||
/* Save the frame's completion value. */
|
/* Save the frame's completion value. */
|
||||||
JSTrapStatus status;
|
JSTrapStatus status;
|
||||||
RootedValue value(cx);
|
RootedValue value(cx);
|
||||||
|
@ -618,8 +625,8 @@ Debugger::slowPathOnLeaveFrame(JSContext* cx, AbstractFramePtr frame, bool frame
|
||||||
if (!cx->isThrowingOverRecursed() && !cx->isThrowingOutOfMemory()) {
|
if (!cx->isThrowingOverRecursed() && !cx->isThrowingOutOfMemory()) {
|
||||||
/* Build a list of the recipients. */
|
/* Build a list of the recipients. */
|
||||||
AutoObjectVector frames(cx);
|
AutoObjectVector frames(cx);
|
||||||
for (FrameRange r(frame, global); !r.empty(); r.popFront()) {
|
for (; !frameRange.empty(); frameRange.popFront()) {
|
||||||
if (!frames.append(r.frontFrame())) {
|
if (!frames.append(frameRange.frontFrame())) {
|
||||||
cx->clearPendingException();
|
cx->clearPendingException();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче