diff options
author | sundar <none@none> | 2013-10-08 16:46:03 +0200 |
---|---|---|
committer | sundar <none@none> | 2013-10-08 16:46:03 +0200 |
commit | b72f65f8be5214be00d855126c371d6d964c4df2 (patch) | |
tree | 5dd2fccf1217ab4140747f91309861393f565c43 /src/jdk/nashorn/internal/objects | |
parent | d7be323a68a40fdae2646d62e69a85ad6d82a122 (diff) |
8026048: Function constructor should convert arguments to String before performing any syntax checks
Reviewed-by: jlaskey, hannesw
Diffstat (limited to 'src/jdk/nashorn/internal/objects')
-rw-r--r-- | src/jdk/nashorn/internal/objects/NativeFunction.java | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/jdk/nashorn/internal/objects/NativeFunction.java b/src/jdk/nashorn/internal/objects/NativeFunction.java index c77002e3..d092cfb6 100644 --- a/src/jdk/nashorn/internal/objects/NativeFunction.java +++ b/src/jdk/nashorn/internal/objects/NativeFunction.java @@ -221,6 +221,7 @@ public final class NativeFunction { final StringBuilder sb = new StringBuilder(); sb.append("(function ("); + final String funcBody; if (args.length > 0) { final StringBuilder paramListBuf = new StringBuilder(); for (int i = 0; i < args.length - 1; i++) { @@ -230,15 +231,20 @@ public final class NativeFunction { } } + // now convert function body to a string + funcBody = JSType.toString(args[args.length - 1]); + final String paramList = paramListBuf.toString(); if (! paramList.isEmpty()) { checkFunctionParameters(paramList); sb.append(paramList); } + } else { + funcBody = null; } + sb.append(") {\n"); if (args.length > 0) { - final String funcBody = JSType.toString(args[args.length - 1]); checkFunctionBody(funcBody); sb.append(funcBody); sb.append('\n'); |