Mercurial > people > rkennke > jdk9-shenandoah-final > nashorn
changeset 12:d8e4d66f1a06
8005843: refSymbols lookup of unbound variable could cause NullPointerException in Lower
Reviewed-by: hannesw, attila
author | lagergren |
---|---|
date | Tue, 08 Jan 2013 10:52:11 +0100 |
parents | 5f2db2d8a7fa |
children | c5a321205f49 |
files | bin/fixorphantests.sh bin/fixwhitespace.sh src/jdk/nashorn/internal/codegen/Lower.java test/script/basic/NASHORN-837.js |
diffstat | 2 files changed, 54 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/jdk/nashorn/internal/codegen/Lower.java Tue Jan 08 15:02:36 2013 +0530 +++ b/src/jdk/nashorn/internal/codegen/Lower.java Tue Jan 08 10:52:11 2013 +0100 @@ -1297,7 +1297,10 @@ final List<Block> lookupBlocks = findLookupBlocksHelper(getCurrentFunctionNode(), symbol.findFunction()); for (final Block lookupBlock : lookupBlocks) { final Symbol refSymbol = lookupBlock.findSymbol(name); - refSymbol.setIsScope(); + if (refSymbol != null) { // See NASHORN-837, function declaration in lexical scope: try {} catch (x){ function f() { use(x) } } f() + LOG.finest("Found a ref symbol that must be scope " + refSymbol); + refSymbol.setIsScope(); + } } } }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/script/basic/NASHORN-837.js Tue Jan 08 10:52:11 2013 +0100 @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * NASHORN-837 : refSymbol lookup caused nullpointer exception in Lower + * + * @test + * @run + */ + +var failed = false; + +try { + try { + throw new TypeError('error'); + } catch (iox) { + function f() { + print(iox.message); + } + } + f(); +} catch (e) { + failed = (e instanceof ReferenceError); + //iox not defined should be thrown +} + +if (!failed) { + print("Failure! iox did not throw correct exception"); +} +