Unified · Split
| @@ -343,6 +343,7 @@ namespace GSF · 342 unmodified lines | ||
| 343 | 343 | string escapedKeyValueDelimiter = keyValueDelimiter.RegexEncode(); |
| 344 | 344 | string escapedStartValueDelimiter = startValueDelimiter.RegexEncode(); |
| 345 | 345 | string escapedEndValueDelimiter = endValueDelimiter.RegexEncode(); |
| 346 | + string backslashDelimiter = '\\'.RegexEncode(); | |
| 346 | 347 | string[] elements; |
| 347 | 348 | string key, unescapedValue; |
| 348 | 349 | bool valueEscaped = false; |
| @@ -402,12 +403,17 @@ namespace GSF · 53 unmodified lines | ||
| 402 | 403 | escapedValue.Append(escapedStartValueDelimiter); |
| 403 | 404 | else if (character == endValueDelimiter) |
| 404 | 405 | escapedValue.Append(escapedEndValueDelimiter); |
| 406 | + else if (character == '\\') | |
| 407 | + escapedValue.Append(backslashDelimiter); | |
| 405 | 408 | else |
| 406 | 409 | escapedValue.Append(character); |
| 407 | 410 | } |
| 408 | 411 | else |
| 409 | 412 | { |
| 410 | − escapedValue.Append(character); | |
| 413 | + if (character == '\\') | |
| 414 | + escapedValue.Append(backslashDelimiter); | |
| 415 | + else | |
| 416 | + escapedValue.Append(character); | |
| 411 | 417 | } |
| 412 | 418 | } |
| 413 | 419 | |
| @@ -436,7 +442,8 @@ namespace GSF · 22 unmodified lines | ||
| 436 | 442 | Replace(escapedParameterDelimiter, parameterDelimiter.ToString()). |
| 437 | 443 | Replace(escapedKeyValueDelimiter, keyValueDelimiter.ToString()). |
| 438 | 444 | Replace(escapedStartValueDelimiter, startValueDelimiter.ToString()). |
| 439 | − Replace(escapedEndValueDelimiter, endValueDelimiter.ToString()); | |
| 445 | + Replace(escapedEndValueDelimiter, endValueDelimiter.ToString()). | |
| 446 | + Replace(backslashDelimiter, "\\"); | |
| 440 | 447 | |
| 441 | 448 | // Add key/value pair to dictionary |
| 442 | 449 | if (ignoreDuplicateKeys) |