From 27009e9708121b5b47e606de514b1e9785bba8a7 Mon Sep 17 00:00:00 2001 From: Tejas Kasetty Date: Wed, 7 Jun 2017 23:50:34 +0530 Subject: [PATCH] util.js: Fix prefix_sort logic to not mutate input. In prefix sort, shifting of objs list to iterate through the elements caused the 'emoji_show_list' to be emptied each time it was passed as argument for sorting. This modifies prefix sort to prevent it from modifying the objs list passed as argument - changed it to normal iteration rather than popping the elements from objs list. --- static/js/util.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/static/js/util.js b/static/js/util.js index 0644cefbfb..0b83fc2d60 100644 --- a/static/js/util.js +++ b/static/js/util.js @@ -241,10 +241,10 @@ exports.prefix_sort = function (query, objs, get_item) { var beginswithCaseSensitive = []; var beginswithCaseInsensitive = []; var noMatch = []; - - var obj = objs.shift(); - while (obj) { - var item; + var obj; + var item; + for (var i = 0; i < objs.length; i += 1) { + obj = objs[i]; if (get_item) { item = get_item(obj); } else { @@ -257,7 +257,6 @@ exports.prefix_sort = function (query, objs, get_item) { } else { noMatch.push(obj); } - obj = objs.shift(); } return { matches: beginswithCaseSensitive.concat(beginswithCaseInsensitive), rest: noMatch };