[mcs] Resize identifier buffer in all cases. Fixes #28292
authorMarek Safar <marek.safar@gmail.com>
Wed, 25 Mar 2015 16:17:23 +0000 (17:17 +0100)
committerMarek Safar <marek.safar@gmail.com>
Wed, 25 Mar 2015 16:17:23 +0000 (17:17 +0100)
mcs/mcs/cs-tokenizer.cs
mcs/tests/test-interpolation-05.cs
mcs/tests/ver-il-net_4_5.xml

index 38f992d652c756a84ae48418fa545fd9c92182d5..7593ed4433c6092ef3fe6e64fb00c99524d98532 100644 (file)
@@ -3931,6 +3931,9 @@ namespace Mono.CSharp
                                                if (pos == value_builder.Length)
                                                        Array.Resize (ref value_builder, pos * 2);
 
+                                               if (pos == value_builder.Length)
+                                                       Array.Resize (ref value_builder, pos * 2);
+
                                                value_builder [pos++] = (char)ch;
                                                ch = surrogate;
                                        }
@@ -3941,6 +3944,9 @@ namespace Mono.CSharp
                                }
 
                                ++col;
+                               if (pos == value_builder.Length)
+                                       Array.Resize (ref value_builder, pos * 2);
+
                                value_builder[pos++] = (char) ch;
                        }
                }
index c604b51badb320cd6969cc85ef80a88df6ad75f4..3dd99f5f2797f7c0db8b3b033fa08dedab20f9ca 100644 (file)
@@ -8,6 +8,11 @@ public class ParserTest
                Console.WriteLine(b ? $"{1:0.00}" : $"bar");
        }
 
+       void Test2 ()
+       {
+               Console.WriteLine($"This should work but the compiler explodes if the string is too long!");            
+       }
+
        public static void Main()
        {
        }
index 5402f2276a60f4d2f399ef1a21fc09f6baa9f597..6f66c1f60a4adfd84e662141304be779472554a9 100644 (file)
       <method name="Void .ctor()" attrs="6278">
         <size>7</size>
       </method>
+      <method name="Void Test2()" attrs="129">
+        <size>12</size>
+      </method>
     </type>
   </test>
   <test name="test-iter-01.cs">