0
0
mirror of https://github.com/nodejs/node.git synced 2024-11-30 15:30:56 +01:00

querystring: use String.prototype.split's limit

There's no need to add extra logic for it, `String.prototype.split`
already has a `limit` argument. By using this argument we avoid keeping
the whole array in memory, and V8 doesn't have to process the entire
string.

PR-URL: https://github.com/nodejs/node/pull/2288
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
Reviewed-By: Michaël Zasso <mic.besace@gmail.com>
This commit is contained in:
Manuel Valls 2015-11-17 08:28:04 +01:00 committed by Michaël Zasso
parent d2dc234def
commit 27def4faf2

View File

@ -209,19 +209,20 @@ QueryString.parse = QueryString.decode = function(qs, sep, eq, options) {
return obj;
}
qs = qs.split(sep);
var maxKeys = 1000;
if (options && typeof options.maxKeys === 'number') {
maxKeys = options.maxKeys;
}
var len = qs.length;
// maxKeys <= 0 means that we should not limit keys count
if (maxKeys > 0 && len > maxKeys) {
len = maxKeys;
if (maxKeys > 0) {
qs = qs.split(sep, maxKeys);
} else {
qs = qs.split(sep);
}
var len = qs.length;
var decode = QueryString.unescape;
if (options && typeof options.decodeURIComponent === 'function') {
decode = options.decodeURIComponent;