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
-~----------~----~----~----~------~----~------~--~---

Reply via email to