mirror of
https://github.com/UglyToad/PdfPig.git
synced 2025-08-01 18:26:15 +08:00
Merge pull request #249 from InusualZ/token-write-string
Fix TokenWriter::WriteString not escaping properly special characters
This commit is contained in:
commit
f3b2960211
30
src/UglyToad.PdfPig.Tests/Writer/TokenWriterTests.cs
Normal file
30
src/UglyToad.PdfPig.Tests/Writer/TokenWriterTests.cs
Normal file
@ -0,0 +1,30 @@
|
||||
namespace UglyToad.PdfPig.Tests.Writer
|
||||
{
|
||||
using Integration;
|
||||
using PdfPig.Writer;
|
||||
using System.IO;
|
||||
using UglyToad.PdfPig.Tokens;
|
||||
using Xunit;
|
||||
|
||||
public class TokenWriterTests
|
||||
{
|
||||
|
||||
[Fact]
|
||||
public void EscapeSpecialCharacter()
|
||||
{
|
||||
using (var memStream = new MemoryStream())
|
||||
{
|
||||
TokenWriter.WriteToken(new StringToken("\\"), memStream);
|
||||
TokenWriter.WriteToken(new StringToken("(Hello)"), memStream);
|
||||
|
||||
// Read Test
|
||||
memStream.Position = 0;
|
||||
using (var streamReader = new StreamReader(memStream))
|
||||
{
|
||||
var line = streamReader.ReadToEnd();
|
||||
Assert.Equal("(\\\\) (\\(Hello\\)) ", line);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -16,6 +16,8 @@
|
||||
/// </summary>
|
||||
public class TokenWriter
|
||||
{
|
||||
private static readonly byte Backslash = GetByte("\\");
|
||||
|
||||
private static readonly byte ArrayStart = GetByte("[");
|
||||
private static readonly byte ArrayEnd = GetByte("]");
|
||||
|
||||
@ -374,6 +376,12 @@
|
||||
for (var i = 0; i < stringToken.Data.Length; i++)
|
||||
{
|
||||
var c = stringToken.Data[i];
|
||||
|
||||
if (c == (char) StringStart || c == (char)StringEnd || c == (char) Backslash)
|
||||
{
|
||||
stringToken = new StringToken(stringToken.Data.Insert(i++, "\\"), stringToken.EncodedWith);
|
||||
}
|
||||
|
||||
// Close enough.
|
||||
if (c > 250)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user