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

github.com/mono/cecil.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Pouliot <sebastien@xamarin.com>2013-10-11 17:26:24 +0400
committerSebastien Pouliot <sebastien@xamarin.com>2013-10-11 17:26:24 +0400
commitf4a15b8cee24cfeaa0f304589839243be51f5b44 (patch)
tree8f7fb6c734cf8d0ee6c1a24f5ba129d58aff3697
parenta868b2c94e39c958e01eb5f55323cfeda031f946 (diff)
parent2a69ce2bd60b557359e3e79e808fdc9113394b23 (diff)
Merge remote-tracking branch 'upstream/master'
-rw-r--r--Mono.Cecil/AssemblyReader.cs22
-rw-r--r--Mono.Cecil/Import.cs1
2 files changed, 22 insertions, 1 deletions
diff --git a/Mono.Cecil/AssemblyReader.cs b/Mono.Cecil/AssemblyReader.cs
index a9f0b6a..3e1cc30 100644
--- a/Mono.Cecil/AssemblyReader.cs
+++ b/Mono.Cecil/AssemblyReader.cs
@@ -3099,9 +3099,29 @@ namespace Mono.Cecil {
}
}
+ string UnescapeTypeName (string name)
+ {
+ StringBuilder sb = new StringBuilder (name.Length);
+ for (int i = 0; i < name.Length; i++) {
+ char c = name [i];
+ if (name [i] == '\\') {
+ if ((i < name.Length - 1) && (name [i + 1] == '\\')) {
+ sb.Append (c);
+ i++;
+ }
+ } else {
+ sb.Append (c);
+ }
+ }
+ return sb.ToString ();
+ }
+
public TypeReference ReadTypeReference ()
{
- return TypeParser.ParseType (reader.module, ReadUTF8String ());
+ string s = ReadUTF8String ();
+ if (s.IndexOf ('\\') != -1)
+ s = UnescapeTypeName (s);
+ return TypeParser.ParseType (reader.module, s);
}
object ReadCustomAttributeEnum (TypeReference enum_type)
diff --git a/Mono.Cecil/Import.cs b/Mono.Cecil/Import.cs
index dc9312b..9304010 100644
--- a/Mono.Cecil/Import.cs
+++ b/Mono.Cecil/Import.cs
@@ -466,6 +466,7 @@ namespace Mono.Cecil {
case MetadataScopeType.AssemblyNameReference:
return ImportAssemblyName ((AssemblyNameReference) scope);
case MetadataScopeType.ModuleDefinition:
+ if (scope == module) return scope;
return ImportAssemblyName (((ModuleDefinition) scope).Assembly.Name);
case MetadataScopeType.ModuleReference:
throw new NotImplementedException ();