From 27def4faf2fb0c759b7e8800f91627cbbca5fdba 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 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-By: Michaƫl Zasso --- lib/querystring.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/querystring.js b/lib/querystring.js index b034635668..d5d4f175b6 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;