[mono/monodevelop] 051e904c: [CorDebug] Fix property reading issues.

"Therzok ([email protected])" <[email protected]> Tue, 5 Nov 2013 19:08:24 +0000
Newsgroups gmane.comp.gnome.mono.patches
Message-ID <0000014229aa6e31-6383f51e-7b2e-4c14-ba7e-9f999e8ba4b3-000000@email.amazonses.com>
   Branch: refs/heads/license-sync
     Home: https://github.com/mono/monodevelop
  Compare: https://github.com/mono/monodevelop/compare/3922fd55055c...051e904cc5e1

   Commit: 051e904cc5e17ebf84885789231f200f7cf62dca
   Author: Therzok <[email protected]> (Therzok)
     Date: 2013-11-05 19:04:01 GMT
      URL: https://github.com/mono/monodevelop/commit/051e904cc5e17ebf84885789231f200f7cf62dca

[CorDebug] Fix property reading issues.

Changed paths:
  M main/src/addins/MonoDevelop.Debugger.Win32/CorApi2/Metadata/MetadataPropertyInfo.cs
  M main/src/addins/MonoDevelop.Debugger.Win32/CorApi2/Metadata/MetadataType.cs

Modified: main/src/addins/MonoDevelop.Debugger.Win32/CorApi2/Metadata/MetadataPropertyInfo.cs
===================================================================
@@ -83,6 +83,12 @@ internal MetadataPropertyInfo (IMetadataImport importer, int propertyToken, Meta
 			m_propAttributes = (PropertyAttributes) pdwPropFlags;
 			m_name = szProperty.ToString ();
 			MetadataHelperFunctions.GetCustomAttribute (importer, propertyToken, typeof (System.Diagnostics.DebuggerBrowsableAttribute));
+
+			if (!m_importer.IsValidToken ((uint)m_pmdGetter))
+				m_pmdGetter = 0;
+
+			if (!m_importer.IsValidToken ((uint)m_pmdSetter))
+				m_pmdSetter = 0;
 		}
 
 		public override PropertyAttributes Attributes
@@ -107,11 +113,15 @@ public override MethodInfo[] GetAccessors (bool nonPublic)
 
 		public override MethodInfo GetGetMethod (bool nonPublic)
 		{
-			if (m_getter == null) {
-				if (m_pmdGetter != 0)
-					m_getter = new MetadataMethodInfo (m_importer, m_pmdGetter);
-			}
-			return m_getter;
+			if (m_pmdGetter == 0)
+				return null;
+
+			if (m_getter == null)
+				m_getter = new MetadataMethodInfo (m_importer, m_pmdGetter);
+
+			if (nonPublic || m_getter.IsPublic)
+				return m_getter;
+			return null;
 		}
 
 		public override ParameterInfo[] GetIndexParameters ( )
@@ -124,11 +134,15 @@ public override ParameterInfo[] GetIndexParameters ( )
 
 		public override MethodInfo GetSetMethod (bool nonPublic)
 		{
-			if (m_setter == null) {
-				if (m_pmdSetter != 0)
-					m_setter = new MetadataMethodInfo (m_importer, m_pmdSetter);
-			}
-			return m_setter;
+			if (m_pmdSetter == 0)
+				return null;
+
+			if (m_setter == null)
+				m_setter = new MetadataMethodInfo (m_importer, m_pmdSetter);
+
+			if (nonPublic || m_setter.IsPublic)
+				return m_setter;
+			return null;
 		}
 
 		public override object GetValue (object obj, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture)


Modified: main/src/addins/MonoDevelop.Debugger.Win32/CorApi2/Metadata/MetadataType.cs
===================================================================
@@ -423,9 +423,9 @@ public override PropertyInfo[] GetProperties(BindingFlags bindingAttr)
 						break;
 					MetadataPropertyInfo prop = new MetadataPropertyInfo (m_importer, methodToken, this);
 					try {
-						MethodInfo mi = prop.GetGetMethod ();
+						MethodInfo mi = prop.GetGetMethod () ?? prop.GetSetMethod ();
 						if (mi == null)
-							mi = prop.GetSetMethod ();
+							continue;
 						if (FlagsMatch (mi.IsPublic, mi.IsStatic, bindingAttr))
 							al.Add (prop);
 					}



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