Skip to content

Commit

Permalink
fix Infinite Loop of AppendFormat Cysharp#1
Browse files Browse the repository at this point in the history
  • Loading branch information
neuecc committed Feb 4, 2020
1 parent ec76c8f commit f4a9467
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 97 deletions.
31 changes: 2 additions & 29 deletions sandbox/ConsoleApp/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,36 +12,9 @@ static void Main(string[] args)

static void Run()
{
//using var sb = ZString.CreateStringBuilder();

//sb.AppendLine("foo");
//sb.AppendLine(100);
//sb.AppendLine("baz");
//sb.AppendLine(123.4);
//sb.AppendLine("foo", 999, "baz", 1000.4);

//Console.WriteLine(sb.ToString());

//using var sb = ZString.CreateStringBuilder();


//sb.Append(100);
//sb.Append(100, "hogehoge");
//sb.Append(100, "hogehoge".AsSpan());


//sb.AppendMany("hogehoge", 100, 300);



using var sb2 = ZString.CreateUtf8StringBuilder();

sb2.Append("あ");
sb2.Append(1999);
sb2.Append("bar");

Console.WriteLine(sb2.ToString());
var f = ZString.Format("abcdef: {0}", "abc");

Console.WriteLine(f);
}
}
}
64 changes: 32 additions & 32 deletions src/ZString/Utf16/Utf16ValueStringBuilder.AppendFormat.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ public void AppendFormat<T0>(ReadOnlySpan<char> format, T0 arg0)

// try to find range
var indexParse = FormatParser.Parse(format.Slice(i));
copyFrom = indexParse.LastIndex + 1;
i = indexParse.LastIndex;
copyFrom = i + indexParse.LastIndex + 1;
i = i + indexParse.LastIndex;
switch (indexParse.Index)
{
case 0:
Expand Down Expand Up @@ -117,8 +117,8 @@ public void AppendFormat<T0, T1>(ReadOnlySpan<char> format, T0 arg0, T1 arg1)

// try to find range
var indexParse = FormatParser.Parse(format.Slice(i));
copyFrom = indexParse.LastIndex + 1;
i = indexParse.LastIndex;
copyFrom = i + indexParse.LastIndex + 1;
i = i + indexParse.LastIndex;
switch (indexParse.Index)
{
case 0:
Expand Down Expand Up @@ -210,8 +210,8 @@ public void AppendFormat<T0, T1, T2>(ReadOnlySpan<char> format, T0 arg0, T1 arg1

// try to find range
var indexParse = FormatParser.Parse(format.Slice(i));
copyFrom = indexParse.LastIndex + 1;
i = indexParse.LastIndex;
copyFrom = i + indexParse.LastIndex + 1;
i = i + indexParse.LastIndex;
switch (indexParse.Index)
{
case 0:
Expand Down Expand Up @@ -316,8 +316,8 @@ public void AppendFormat<T0, T1, T2, T3>(ReadOnlySpan<char> format, T0 arg0, T1

// try to find range
var indexParse = FormatParser.Parse(format.Slice(i));
copyFrom = indexParse.LastIndex + 1;
i = indexParse.LastIndex;
copyFrom = i + indexParse.LastIndex + 1;
i = i + indexParse.LastIndex;
switch (indexParse.Index)
{
case 0:
Expand Down Expand Up @@ -435,8 +435,8 @@ public void AppendFormat<T0, T1, T2, T3, T4>(ReadOnlySpan<char> format, T0 arg0,

// try to find range
var indexParse = FormatParser.Parse(format.Slice(i));
copyFrom = indexParse.LastIndex + 1;
i = indexParse.LastIndex;
copyFrom = i + indexParse.LastIndex + 1;
i = i + indexParse.LastIndex;
switch (indexParse.Index)
{
case 0:
Expand Down Expand Up @@ -567,8 +567,8 @@ public void AppendFormat<T0, T1, T2, T3, T4, T5>(ReadOnlySpan<char> format, T0 a

// try to find range
var indexParse = FormatParser.Parse(format.Slice(i));
copyFrom = indexParse.LastIndex + 1;
i = indexParse.LastIndex;
copyFrom = i + indexParse.LastIndex + 1;
i = i + indexParse.LastIndex;
switch (indexParse.Index)
{
case 0:
Expand Down Expand Up @@ -712,8 +712,8 @@ public void AppendFormat<T0, T1, T2, T3, T4, T5, T6>(ReadOnlySpan<char> format,

// try to find range
var indexParse = FormatParser.Parse(format.Slice(i));
copyFrom = indexParse.LastIndex + 1;
i = indexParse.LastIndex;
copyFrom = i + indexParse.LastIndex + 1;
i = i + indexParse.LastIndex;
switch (indexParse.Index)
{
case 0:
Expand Down Expand Up @@ -870,8 +870,8 @@ public void AppendFormat<T0, T1, T2, T3, T4, T5, T6, T7>(ReadOnlySpan<char> form

// try to find range
var indexParse = FormatParser.Parse(format.Slice(i));
copyFrom = indexParse.LastIndex + 1;
i = indexParse.LastIndex;
copyFrom = i + indexParse.LastIndex + 1;
i = i + indexParse.LastIndex;
switch (indexParse.Index)
{
case 0:
Expand Down Expand Up @@ -1041,8 +1041,8 @@ public void AppendFormat<T0, T1, T2, T3, T4, T5, T6, T7, T8>(ReadOnlySpan<char>

// try to find range
var indexParse = FormatParser.Parse(format.Slice(i));
copyFrom = indexParse.LastIndex + 1;
i = indexParse.LastIndex;
copyFrom = i + indexParse.LastIndex + 1;
i = i + indexParse.LastIndex;
switch (indexParse.Index)
{
case 0:
Expand Down Expand Up @@ -1225,8 +1225,8 @@ public void AppendFormat<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>(ReadOnlySpan<ch

// try to find range
var indexParse = FormatParser.Parse(format.Slice(i));
copyFrom = indexParse.LastIndex + 1;
i = indexParse.LastIndex;
copyFrom = i + indexParse.LastIndex + 1;
i = i + indexParse.LastIndex;
switch (indexParse.Index)
{
case 0:
Expand Down Expand Up @@ -1422,8 +1422,8 @@ public void AppendFormat<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(ReadOnlySp

// try to find range
var indexParse = FormatParser.Parse(format.Slice(i));
copyFrom = indexParse.LastIndex + 1;
i = indexParse.LastIndex;
copyFrom = i + indexParse.LastIndex + 1;
i = i + indexParse.LastIndex;
switch (indexParse.Index)
{
case 0:
Expand Down Expand Up @@ -1632,8 +1632,8 @@ public void AppendFormat<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(ReadO

// try to find range
var indexParse = FormatParser.Parse(format.Slice(i));
copyFrom = indexParse.LastIndex + 1;
i = indexParse.LastIndex;
copyFrom = i + indexParse.LastIndex + 1;
i = i + indexParse.LastIndex;
switch (indexParse.Index)
{
case 0:
Expand Down Expand Up @@ -1855,8 +1855,8 @@ public void AppendFormat<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(

// try to find range
var indexParse = FormatParser.Parse(format.Slice(i));
copyFrom = indexParse.LastIndex + 1;
i = indexParse.LastIndex;
copyFrom = i + indexParse.LastIndex + 1;
i = i + indexParse.LastIndex;
switch (indexParse.Index)
{
case 0:
Expand Down Expand Up @@ -2091,8 +2091,8 @@ public void AppendFormat<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,

// try to find range
var indexParse = FormatParser.Parse(format.Slice(i));
copyFrom = indexParse.LastIndex + 1;
i = indexParse.LastIndex;
copyFrom = i + indexParse.LastIndex + 1;
i = i + indexParse.LastIndex;
switch (indexParse.Index)
{
case 0:
Expand Down Expand Up @@ -2340,8 +2340,8 @@ public void AppendFormat<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,

// try to find range
var indexParse = FormatParser.Parse(format.Slice(i));
copyFrom = indexParse.LastIndex + 1;
i = indexParse.LastIndex;
copyFrom = i + indexParse.LastIndex + 1;
i = i + indexParse.LastIndex;
switch (indexParse.Index)
{
case 0:
Expand Down Expand Up @@ -2602,8 +2602,8 @@ public void AppendFormat<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,

// try to find range
var indexParse = FormatParser.Parse(format.Slice(i));
copyFrom = indexParse.LastIndex + 1;
i = indexParse.LastIndex;
copyFrom = i + indexParse.LastIndex + 1;
i = i + indexParse.LastIndex;
switch (indexParse.Index)
{
case 0:
Expand Down
4 changes: 2 additions & 2 deletions src/ZString/Utf16/Utf16ValueStringBuilder.AppendFormat.tt
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ namespace Cysharp.Text

// try to find range
var indexParse = FormatParser.Parse(format.Slice(i));
copyFrom = indexParse.LastIndex + 1;
i = indexParse.LastIndex;
copyFrom = i + indexParse.LastIndex + 1;
i = i + indexParse.LastIndex;
switch (indexParse.Index)
{
<# for(var j = 0; j < i; j++) { #>
Expand Down
Loading

0 comments on commit f4a9467

Please sign in to comment.