Changeset 35584

Show
Ignore:
Timestamp:
08/05/08 17:39:06 (4 months ago)
Author:
cwzwarich@webkit.org
Message:

2008-08-05 Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Darin.

Bug 20293: Crash in JavaScript codegen for eval("const a;")
<https://bugs.webkit.org/show_bug.cgi?id=20293>

Correctly handle constant declarations in eval code with no initializer.

JavaScriptCore:

  • kjs/nodes.cpp: (KJS::ConstDeclNode::emitCodeSingle):

LayoutTests:

  • fast/js/const-expected.txt:
  • fast/js/resources/const.js:
Location:
trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r35557 r35584  
     12008-08-05  Cameron Zwarich  <cwzwarich@uwaterloo.ca> 
     2 
     3        Reviewed by Darin. 
     4 
     5        Bug 20293: Crash in JavaScript codegen for eval("const a;") 
     6        <https://bugs.webkit.org/show_bug.cgi?id=20293> 
     7 
     8        Correctly handle constant declarations in eval code with no initializer. 
     9 
     10        * kjs/nodes.cpp: 
     11        (KJS::ConstDeclNode::emitCodeSingle): 
     12 
    1132008-08-05  Cameron Zwarich  <cwzwarich@uwaterloo.ca> 
    214 
  • trunk/JavaScriptCore/kjs/nodes.cpp

    r35533 r35584  
    10161016    // assign to the wrong base if m_ident exists in an intervening dynamic scope. 
    10171017    RefPtr<RegisterID> base = generator.emitResolveBase(generator.newTemporary(), m_ident); 
    1018     RegisterID* value = generator.emitNode(m_init.get()); 
     1018    RegisterID* value = m_init ? generator.emitNode(m_init.get()) : generator.emitLoad(generator.newTemporary(), jsUndefined()); 
    10191019    return generator.emitPutById(base.get(), m_ident, value); 
    10201020} 
  • trunk/LayoutTests/ChangeLog

    r35557 r35584  
     12008-08-05  Cameron Zwarich  <cwzwarich@uwaterloo.ca> 
     2 
     3        Reviewed by Darin. 
     4 
     5        Test for bug 20293: Crash in JavaScript codegen for eval("const a;") 
     6        <https://bugs.webkit.org/show_bug.cgi?id=20293> 
     7 
     8        * fast/js/const-expected.txt: 
     9        * fast/js/resources/const.js: 
     10 
    1112008-08-05  Cameron Zwarich  <cwzwarich@uwaterloo.ca> 
    212 
  • trunk/LayoutTests/fast/js/const-expected.txt

    r35368 r35584  
    4848PASS (function(){ one = 2; return one; })() is 1 
    4949PASS f() is f 
     50PASS const a; is undefined 
    5051PASS successfullyParsed is true 
    5152 
  • trunk/LayoutTests/fast/js/resources/const.js

    r35368 r35584  
    108108shouldBe("f()", "f"); 
    109109 
     110shouldBe("const a;", "undefined"); 
     111 
    110112var successfullyParsed = true;