Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/mcs/ilasm
diff options
context:
space:
mode:
authorAnkit Jain <radical@corewars.org>2009-04-07 22:34:18 +0400
committerAnkit Jain <radical@corewars.org>2009-04-07 22:34:18 +0400
commit3d1aae67ebaf81462341c74d6ad3db1274a0ae6f (patch)
treebe10cd25d726fc4ad78cbf8764c72915581155ab /mcs/ilasm
parent0cf0bbc5e00ad0e3926b2c9b9550e8ea8d835c45 (diff)
Fix bug #487155.
* StringHelper.cs: Handle octal values in strings. Patch from Stephen Gennard (stephen@gennard.net) svn path=/trunk/mcs/; revision=131249
Diffstat (limited to 'mcs/ilasm')
-rw-r--r--mcs/ilasm/scanner/ChangeLog6
-rw-r--r--mcs/ilasm/scanner/StringHelper.cs15
2 files changed, 18 insertions, 3 deletions
diff --git a/mcs/ilasm/scanner/ChangeLog b/mcs/ilasm/scanner/ChangeLog
index 103e7bc94a9..a4754c1e808 100644
--- a/mcs/ilasm/scanner/ChangeLog
+++ b/mcs/ilasm/scanner/ChangeLog
@@ -1,3 +1,9 @@
+2009-04-08 Ankit Jain <jankit@novell.com>
+
+ Fix bug #487155.
+ * StringHelper.cs: Handle octal values in strings.
+ Patch from Stephen Gennard (stephen@gennard.net)
+
2006-11-09 Ankit Jain <jankit@novell.com>
* ILTables.cs (keywords): Add 'retargetable'.
diff --git a/mcs/ilasm/scanner/StringHelper.cs b/mcs/ilasm/scanner/StringHelper.cs
index e1e13e02b07..abd51327737 100644
--- a/mcs/ilasm/scanner/StringHelper.cs
+++ b/mcs/ilasm/scanner/StringHelper.cs
@@ -78,7 +78,7 @@ namespace Mono.ILASM {
continue;
}
- int escaped = Escape (ch);
+ int escaped = Escape (reader, ch);
if (escaped == -1) {
reader.Unread (ch);
ch = '\\';
@@ -109,12 +109,21 @@ namespace Mono.ILASM {
/// </summary>
/// <param name="ch"></param>
/// <returns></returns>
- public static int Escape (int ch)
+ public static int Escape (ILReader reader, int ch)
{
int res = -1;
if (ch >= '0' && ch <='7') {
- //TODO : octal code
+ StringBuilder octal = new StringBuilder ();
+ octal.Append ((char)ch);
+ int possibleOctalChar = reader.Peek ();
+ if (possibleOctalChar >= '0' && possibleOctalChar <='7') {
+ octal.Append ((char)reader.Read ());
+ possibleOctalChar = reader.Peek ();
+ if (possibleOctalChar >= '0' && possibleOctalChar <='7')
+ octal.Append ((char)reader.Read ());
+ }
+ res = Convert.ToInt32(octal.ToString (), 8);
} else {
int id = "abfnrtv\"'\\".IndexOf ((char)ch);
if (id != -1) {