Reviewers: Mads Ager, Description: Work around issue 131 by checking for empty handles in a few places.
Please review this at http://codereview.chromium.org/8828 SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/api.cc M src/top.cc Index: src/api.cc =================================================================== --- src/api.cc (revision 615) +++ src/api.cc (working copy) @@ -230,7 +230,13 @@ v8::Handle<Value> ThrowException(v8::Handle<v8::Value> value) { if (IsDeadCheck("v8::ThrowException()")) return v8::Handle<Value>(); - i::Top::ScheduleThrow(*Utils::OpenHandle(*value)); + // If we're passed an empty handle, we throw an undefined exception + // to deal more gracefully with out of memory situations. + if (value.IsEmpty()) { + i::Top::ScheduleThrow(i::Heap::undefined_value()); + } else { + i::Top::ScheduleThrow(*Utils::OpenHandle(*value)); + } return v8::Undefined(); } Index: src/top.cc =================================================================== --- src/top.cc (revision 615) +++ src/top.cc (working copy) @@ -806,7 +806,7 @@ if (report_exception) { if (message != NULL) { MessageHandler::ReportMessage(message); - } else { + } else if (!message_obj.is_null()) { MessageHandler::ReportMessage(location, message_obj); } } --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
