Просмотр исходного кода

2010-02-18 Atsushi Enomoto <[email protected]>

	* JsonValue.cs : fix string escaping, it was giving wrong output
	  after \" and \\.


svn path=/trunk/mcs/; revision=151954
Atsushi Eno 16 лет назад
Родитель
Сommit
c2d585a1ea

+ 5 - 0
mcs/class/System.Json/System.Json/ChangeLog

@@ -1,3 +1,8 @@
+2010-02-18  Atsushi Enomoto  <[email protected]>
+
+	* JsonValue.cs : fix string escaping, it was giving wrong output
+	  after \" and \\.
+
 2010-02-18  Atsushi Enomoto  <[email protected]>
 
 	* JsonReader.cs : line endings after a value should not result in

+ 6 - 4
mcs/class/System.Json/System.Json/JsonValue.cs

@@ -130,21 +130,23 @@ namespace System.Json
 				if (src [i] == '"' || src [i] == '\\') {
 					var sb = new StringBuilder ();
 					if (i > 0)
-						sb.Append (src, 0, i - 1);
+						sb.Append (src, 0, i);
 					return DoEscapeString (sb, src, i);
-			}
+				}
 			return src;
 		}
 
 		string DoEscapeString (StringBuilder sb, string src, int cur)
 		{
+			int start = cur;
 			for (int i = cur; i < src.Length; i++)
 				if (src [i] == '"' || src [i] == '\\') {
+					sb.Append (src, start, i - start);
 					sb.Append ('\\');
 					sb.Append (src [i++]);
-					return DoEscapeString (sb, src, i);
+					start = i;
 				}
-			sb.Append (src, cur, src.Length - cur);
+			sb.Append (src, start, src.Length - start);
 			return sb.ToString ();
 		}