Author: [email protected]
Date: Tue Feb 24 05:33:49 2009
New Revision: 1350

Modified:
    branches/bleeding_edge/src/objects.cc
    branches/bleeding_edge/test/cctest/test-compiler.cc

Log:
Fixed regression http://code.google.com/p/v8/issues/detail?id=236.
The problem was that the case of 'undefined' script source wasn't
handled in Script::InitLineEnds.

Review URL: http://codereview.chromium.org/28068

Modified: branches/bleeding_edge/src/objects.cc
==============================================================================
--- branches/bleeding_edge/src/objects.cc       (original)
+++ branches/bleeding_edge/src/objects.cc       Tue Feb 24 05:33:49 2009
@@ -6953,6 +6953,12 @@
  void Script::InitLineEnds() {
    if (!line_ends()->IsUndefined()) return;

+  if (source()->IsUndefined()) {
+    set_line_ends(*(Factory::NewArrayLiteral(0)));
+    ASSERT(line_ends()->IsJSArray());
+    return;
+  }
+
    Handle<String> src(String::cast(source()));
    const int src_len = src->length();
    Handle<String> new_line = Factory::NewStringFromAscii(CStrVector("\n"));

Modified: branches/bleeding_edge/test/cctest/test-compiler.cc
==============================================================================
--- branches/bleeding_edge/test/cctest/test-compiler.cc (original)
+++ branches/bleeding_edge/test/cctest/test-compiler.cc Tue Feb 24 05:33:49  
2009
@@ -302,3 +302,17 @@
                    &has_pending_exception);
    CHECK(!has_pending_exception);
  }
+
+
+// Regression 236. Calling InitLineEnds on a Script with undefined
+// source resulted in crash.
+TEST(Regression236) {
+  InitializeVM();
+  v8::HandleScope scope;
+
+  Handle<Script> script = Factory::NewScript(Factory::empty_string());
+  script->set_source(Heap::undefined_value());
+  CHECK_EQ(-1, script->GetLineNumber(0));
+  CHECK_EQ(-1, script->GetLineNumber(100));
+  CHECK_EQ(-1, script->GetLineNumber(-1));
+}

--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to