From e9a9e925c8cb692b6ce012024ab4a4d20cc77d89 Mon Sep 17 00:00:00 2001 From: sta Date: Wed, 7 Feb 2018 20:55:05 +0900 Subject: [PATCH] [Modify] Polish it --- websocket-sharp/Ext.cs | 47 ++++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/websocket-sharp/Ext.cs b/websocket-sharp/Ext.cs index 098fa388..06066d16 100644 --- a/websocket-sharp/Ext.cs +++ b/websocket-sharp/Ext.cs @@ -825,33 +825,44 @@ namespace WebSocketSharp var seps = new string (separators); var buff = new StringBuilder (32); + var end = len - 1; var escaped = false; var quoted = false; - for (var i = 0; i < len; i++) { + for (var i = 0; i <= end; i++) { var c = value[i]; - if (c == '"') { - if (escaped) - escaped = !escaped; - else - quoted = !quoted; - } - else if (c == '\\') { - if (i < len - 1 && value[i + 1] == '"') - escaped = true; - } - else if (seps.Contains (c)) { - if (!quoted) { - yield return buff.ToString (); + buff.Append (c); - buff.Length = 0; + if (c == '"') { + if (escaped) { + escaped = false; continue; } - } - else { + + quoted = !quoted; + continue; } - buff.Append (c); + if (c == '\\') { + if (i == end) + break; + + if (value[i + 1] == '"') + escaped = true; + + continue; + } + + if (seps.Contains (c)) { + if (quoted) + continue; + + buff.Length -= 1; + yield return buff.ToString (); + + buff.Length = 0; + continue; + } } yield return buff.ToString ();