From 91a6cab5a7b04e14b50906ddb164ffab6a3b6178 Mon Sep 17 00:00:00 2001 From: Manuel Valls Date: Tue, 17 Nov 2015 08:28:04 +0100 Subject: [PATCH] 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. --- lib/querystring.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/querystring.js b/lib/querystring.js index b034635668faa8..d5d4f175b6bebf 100644 --- a/lib/querystring.js +++ b/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;