aboutsummaryrefslogtreecommitdiff
path: root/src/jdk/nashorn/internal/objects
diff options
context:
space:
mode:
authorsundar <none@none>2013-10-08 16:46:03 +0200
committersundar <none@none>2013-10-08 16:46:03 +0200
commitb72f65f8be5214be00d855126c371d6d964c4df2 (patch)
tree5dd2fccf1217ab4140747f91309861393f565c43 /src/jdk/nashorn/internal/objects
parentd7be323a68a40fdae2646d62e69a85ad6d82a122 (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.java8
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');