summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Klauke <romaaan.git@gmail.com>2015-05-07 20:27:12 +0200
committerBen Noordhuis <info@bnoordhuis.nl>2015-05-08 19:09:45 +0200
commit931a0d463443c68a10c8028f2ebdd01db20da1f9 (patch)
tree5babba4596ef3e30d1cbebd3462ebdd5682f6c5a
parent8bf878d6e5ac0faa3871cddd5dcc423ae4d3d45a (diff)
downloadnode-new-931a0d463443c68a10c8028f2ebdd01db20da1f9.tar.gz
src: add type check to v8.setFlagsFromString()
Calling v8.setFlagsFromString with e.g a function as a flag argument gave no exception or warning that the function call will fail. There is now an exception if the function gets called with the wrong flag type (string is required) or that a flag is expected. Other APIs already provide exceptions if the argument has not the expected type. PR-URL: https://github.com/iojs/io.js/pull/1652 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
-rw-r--r--doc/api/v8.markdown2
-rw-r--r--src/node_v8.cc7
-rw-r--r--test/parallel/test-v8-flag-type-check.js6
3 files changed, 14 insertions, 1 deletions
diff --git a/doc/api/v8.markdown b/doc/api/v8.markdown
index adced82685..cedd5c86d9 100644
--- a/doc/api/v8.markdown
+++ b/doc/api/v8.markdown
@@ -20,7 +20,7 @@ Returns an object with the following properties
}
```
-## setFlagsFromString()
+## setFlagsFromString(string)
Set additional V8 command line flags. Use with care; changing settings
after the VM has started may result in unpredictable behavior, including
diff --git a/src/node_v8.cc b/src/node_v8.cc
index f3bdda409d..2834a21496 100644
--- a/src/node_v8.cc
+++ b/src/node_v8.cc
@@ -60,6 +60,13 @@ void GetHeapStatistics(const FunctionCallbackInfo<Value>& args) {
void SetFlagsFromString(const FunctionCallbackInfo<Value>& args) {
+ Environment* env = Environment::GetCurrent(args);
+
+ if (args.Length() < 1)
+ return env->ThrowTypeError("v8 flag is required");
+ if (!args[0]->IsString())
+ return env->ThrowTypeError("v8 flag must be a string");
+
String::Utf8Value flags(args[0]);
V8::SetFlagsFromString(*flags, flags.length());
}
diff --git a/test/parallel/test-v8-flag-type-check.js b/test/parallel/test-v8-flag-type-check.js
new file mode 100644
index 0000000000..1bb501df43
--- /dev/null
+++ b/test/parallel/test-v8-flag-type-check.js
@@ -0,0 +1,6 @@
+var common = require('../common');
+var assert = require('assert');
+var v8 = require('v8');
+
+assert.throws(function() {v8.setFlagsFromString(1)}, TypeError);
+assert.throws(function() {v8.setFlagsFromString()}, TypeError);