From 3208461516e2d45ead702f7ddcf9484eedd60439 Mon Sep 17 00:00:00 2001
From: Waqas Hussain <waqas20@gmail.com>
Date: Sun, 5 May 2013 15:02:33 -0400
Subject: util.json: Optimize long string parsing.

---
 util/json.lua | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

(limited to 'util')

diff --git a/util/json.lua b/util/json.lua
index 9c2dd2c6..6251af1a 100644
--- a/util/json.lua
+++ b/util/json.lua
@@ -258,16 +258,16 @@ function json.decode(json)
 		return val;
 	end
 	local function readstring()
-		local s = "";
+		local s = {};
 		checkandskip("\"");
 		while ch do
 			while ch and ch ~= "\\" and ch ~= "\"" do
-				s = s..ch; next();
+				t_insert(s, ch); next();
 			end
 			if ch == "\\" then
 				next();
 				if unescapes[ch] then
-					s = s..unescapes[ch];
+					t_insert(s, unescapes[ch]);
 					next();
 				elseif ch == "u" then
 					local seq = "";
@@ -277,13 +277,13 @@ function json.decode(json)
 						if not ch:match("[0-9a-fA-F]") then error("invalid unicode escape sequence in string"); end
 						seq = seq..ch;
 					end
-					s = s..codepoint_to_utf8(tonumber(seq, 16));
+					t_insert(s, codepoint_to_utf8(tonumber(seq, 16)));
 					next();
 				else error("invalid escape sequence in string"); end
 			end
 			if ch == "\"" then
 				next();
-				return s;
+				return t_concat(s);
 			end
 		end
 		error("eof while reading string");
-- 
cgit v1.2.3