Reviewers: Kasper Lund, Description: Merge bleeding_edge revision 3364 to the 1.3 branch.
Do not force fatal error when getting exception during extension installation. Please review this at http://codereview.chromium.org/432023 SVN Base: http://v8.googlecode.com/svn/branches/1.3/ Affected files: M src/bootstrapper.cc M src/version.cc M test/cctest/test-api.cc Index: test/cctest/test-api.cc =================================================================== --- test/cctest/test-api.cc (revision 3364) +++ test/cctest/test-api.cc (working copy) @@ -2906,6 +2906,40 @@ } +static const char* kSyntaxErrorInExtensionSource = + "["; + + +// Test that a syntax error in an extension does not cause a fatal +// error but results in an empty context. +THREADED_TEST(SyntaxErrorExtensions) { + v8::HandleScope handle_scope; + v8::RegisterExtension(new Extension("syntaxerror", + kSyntaxErrorInExtensionSource)); + const char* extension_names[] = { "syntaxerror" }; + v8::ExtensionConfiguration extensions(1, extension_names); + v8::Handle<Context> context = Context::New(&extensions); + CHECK(context.IsEmpty()); +} + + +static const char* kExceptionInExtensionSource = + "throw 42"; + + +// Test that an exception when installing an extension does not cause +// a fatal error but results in an empty context. +THREADED_TEST(ExceptionExtensions) { + v8::HandleScope handle_scope; + v8::RegisterExtension(new Extension("exception", + kExceptionInExtensionSource)); + const char* extension_names[] = { "exception" }; + v8::ExtensionConfiguration extensions(1, extension_names); + v8::Handle<Context> context = Context::New(&extensions); + CHECK(context.IsEmpty()); +} + + static void CheckDependencies(const char* name, const char* expected) { v8::HandleScope handle_scope; v8::ExtensionConfiguration config(1, &name); Index: src/bootstrapper.cc =================================================================== --- src/bootstrapper.cc (revision 3364) +++ src/bootstrapper.cc (working copy) @@ -1302,8 +1302,6 @@ ASSERT(Top::has_pending_exception() != result); if (!result) { Top::clear_pending_exception(); - v8::Utils::ReportApiFailure( - "v8::Context::New()", "Error installing extension"); } current->set_state(v8::INSTALLED); return result; Index: src/version.cc =================================================================== --- src/version.cc (revision 3364) +++ src/version.cc (working copy) @@ -35,7 +35,7 @@ #define MAJOR_VERSION 1 #define MINOR_VERSION 3 #define BUILD_NUMBER 18 -#define PATCH_LEVEL 12 +#define PATCH_LEVEL 13 #define CANDIDATE_VERSION false // Define SONAME to have the SCons build the put a specific SONAME into the --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
