Author: jbevain
Date: 2005-04-19 16:57:29 -0400 (Tue, 19 Apr 2005)
New Revision: 43298

Modified:
   trunk/cecil/lib/Mono.Cecil.Signatures/SignatureReader.cs
Log:
correct a bug to be able to read arrays in custom attributes

Modified: trunk/cecil/lib/Mono.Cecil.Signatures/SignatureReader.cs
===================================================================
--- trunk/cecil/lib/Mono.Cecil.Signatures/SignatureReader.cs    2005-04-19 
20:55:21 UTC (rev 43297)
+++ trunk/cecil/lib/Mono.Cecil.Signatures/SignatureReader.cs    2005-04-19 
20:57:29 UTC (rev 43298)
@@ -135,8 +135,7 @@
             int start, callconv;
             Utilities.ReadCompressedInteger (m_blobData, (int) index, out 
start);
             callconv = m_blobData [start];
-            bool field = (callconv & 0x7) != 0;
-            if (field)
+            if ((callconv & 0x7) != 0) // field ?
                 return GetFieldSig (index);
             switch (tt) {
             case TokenType.TypeDef :
@@ -467,6 +466,7 @@
             if (array) {
                 fa.SzArray = true;
                 fa.NumElem = br.ReadUInt32 ();
+
                 if (fa.NumElem == 0 || fa.NumElem == 0xffffffff) {
                     fa.Elems = new CustomAttrib.Elem [0];
                     return fa;
@@ -546,7 +546,9 @@
         {
             CustomAttrib.Elem elem = new CustomAttrib.Elem ();
 
-            if (elemType.FullName == "System.Object") {
+            string elemName = string.Concat (elemType.Namespace, '.', 
elemType.Name);
+
+            if (elemName == "System.Object") {
                 ElementType elementType = (ElementType) br.ReadByte ();
                 elem = ReadElem (data, br, elementType);
                 elem.String = elem.Simple = elem.Type = false;
@@ -557,7 +559,7 @@
 
             elem.ElemType = elemType;
 
-            if (elemType.FullName == "System.Type" || elemType.FullName == 
"System.String") {
+            if (elemName == "System.Type" || elemName == "System.String") {
                 switch (elemType.FullName) {
                 case "System.String" :
                     elem.String = true;
@@ -583,7 +585,7 @@
 
             elem.String = elem.Type = elem.BoxedValueType = false;
 
-            switch (elemType.FullName) {
+            switch (elemName) {
             case "System.Boolean" :
                 elem.Value = br.ReadByte () == 1;
                 break;

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to