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

"Therzok ([email protected])" <[email protected]> Tue, 5 Nov 2013 18:50:17 +0000
Newsgroups gmane.comp.gnome.mono.patches
Message-ID <000001422999d767-e304c82c-6448-4d71-8f02-6d9488b79ee5-000000@email.amazonses.com>
   Branch: refs/heads/master
     Home: https://github.com/mono/monodevelop
  Compare: https://github.com/mono/monodevelop/compare/bf8fd98ff7fa...aff162200b65

   Commit: aff162200b65f95b099ad8671f8c2c6d3fa53bed
   Author: Therzok <[email protected]> (Therzok)
     Date: 2013-11-05 18:48:57 GMT
      URL: https://github.com/mono/monodevelop/commit/aff162200b65f95b099ad8671f8c2c6d3fa53bed

[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