js/src/tests/js1_5/Regress/regress-350312.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     2 /* This Source Code Form is subject to the terms of the Mozilla Public
     3  * License, v. 2.0. If a copy of the MPL was not distributed with this
     4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     6 //-----------------------------------------------------------------------------
     7 var BUGNUMBER = 350312;
     8 var summary = 'Accessing wrong stack slot with nested catch/finally';
     9 var actual = '';
    10 var expect = '';
    13 //-----------------------------------------------------------------------------
    14 test();
    15 //-----------------------------------------------------------------------------
    17 function test()
    18 {
    19   enterFunc ('test');
    20   printBugNumber(BUGNUMBER);
    21   printStatus (summary);
    23   var counter = 0;
    25   function f(x,y) {
    27     try
    28     {
    29       throw x;
    30     }
    31     catch(e)
    32     {
    33       if (y)
    34         throw e;
    35     }
    36     finally
    37     {
    38       try
    39       {
    40         actual += 'finally,';
    41         throw 42;
    42       }
    43       catch(e2)
    44       {
    45         actual += e2;
    46         if (++counter > 10)
    47         {
    48           throw 'Infinite loop...';
    49         }
    50       }
    51     }
    52     return 'returned';
    53   }
    55   expect = 'finally,42';
    56   actual = '';
    58   try
    59   {
    60     print('test 1');
    61     f(2, 1);
    62   }
    63   catch(ex)
    64   {
    65   }
    66   reportCompare(expect, actual, summary);
    68   actual = '';
    69   try
    70   {
    71     print('test 2');
    72     f(2, 0);
    73   }
    74   catch(ex)
    75   {
    76   }
    77   reportCompare(expect, actual, summary);
    79   exitFunc ('test');
    80 }

mercurial