Ignore:
Timestamp:
Aug 9, 2017, 7:43:07 PM (7 years ago)
Author:
alloc
Message:

Fixes 14_16_21

File:
1 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/7dtd-server-fixes/src/JSON/JSONString.cs

    r306 r309  
    1818                }
    1919
    20                 public override string ToString (bool prettyPrint = false, int currentLevel = 0)
     20                public override void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0)
    2121                {
    2222                        if (value == null || value.Length == 0) {
    23                                 return "\"\"";
     23                                stringBuilder.Append ("\"\"");
     24                                return;
    2425                        }
    2526
    2627                        int len = value.Length;
    2728
    28                         StringBuilder sb = new StringBuilder (len + 4);
     29                        stringBuilder.EnsureCapacity (stringBuilder.Length + 2*len);
    2930                        String t;
     31
     32                        stringBuilder.Append ('"');
    3033
    3134                        foreach (char c in value) {
     
    3437                                        case '"':
    3538//                                      case '/':
    36                                                 sb.Append ('\\');
    37                                                 sb.Append (c);
     39                                                stringBuilder.Append ('\\');
     40                                                stringBuilder.Append (c);
    3841                                                break;
    3942                                        case '\b':
    40                                                 sb.Append ("\\b");
     43                                                stringBuilder.Append ("\\b");
    4144                                                break;
    4245                                        case '\t':
    43                                                 sb.Append ("\\t");
     46                                                stringBuilder.Append ("\\t");
    4447                                                break;
    4548                                        case '\n':
    46                                                 sb.Append ("\\n");
     49                                                stringBuilder.Append ("\\n");
    4750                                                break;
    4851                                        case '\f':
    49                                                 sb.Append ("\\f");
     52                                                stringBuilder.Append ("\\f");
    5053                                                break;
    5154                                        case '\r':
    52                                                 sb.Append ("\\r");
     55                                                stringBuilder.Append ("\\r");
    5356                                                break;
    5457                                        default:
    5558                                                if (c < ' ') {
    56                                                         t = "000" + String.Format ("X", c);
    57                                                         sb.Append ("\\u" + t.Substring (t.Length - 4));
     59                                                        stringBuilder.Append ("\\u");
     60                                                        stringBuilder.Append (((int)c).ToString ("X4"));
    5861                                                } else {
    59                                                         sb.Append (c);
     62                                                        stringBuilder.Append (c);
    6063                                                }
    6164                                                break;
     
    6366                        }
    6467
    65                         return string.Format ("\"{0}\"", sb.ToString ());
     68                        stringBuilder.Append ('"');
    6669                }
    6770
Note: See TracChangeset for help on using the changeset viewer.