Browse Source

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>
process-exit-stdio-flushing
Manuel Valls 9 years ago
committed by Michaël Zasso
parent
commit
27def4faf2
  1. 11
      lib/querystring.js

11
lib/querystring.js

@ -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;

Loading…
Cancel
Save