Fix Type and Module name filters to match
authorMarek Safar <marek.safar@gmail.com>
Wed, 27 Feb 2013 21:56:25 +0000 (22:56 +0100)
committerMarek Safar <marek.safar@gmail.com>
Wed, 27 Feb 2013 21:58:32 +0000 (22:58 +0100)
mcs/class/corlib/System.Reflection/Module.cs
mcs/class/corlib/System/Type.cs

index 6cea63594ed84f08d1b842d179df9b1bf5047945..0fdf9d7d255f745607794c0e57aa25fcbb4e3daa 100644 (file)
@@ -219,18 +219,18 @@ namespace System.Reflection {
 
                private static bool filter_by_type_name (Type m, object filterCriteria) {
                        string s = (string)filterCriteria;
-                       if (s.EndsWith ("*"))
-                               return m.Name.StartsWith (s.Substring (0, s.Length - 1));
-                       else
-                               return m.Name == s;
+                       if (s.Length > 0 && s [s.Length - 1] == '*')
+                               return m.Name.StartsWith (s.Substring (0, s.Length - 1), StringComparison.Ordinal);
+                       
+                       return m.Name == s;
                }
 
                private static bool filter_by_type_name_ignore_case (Type m, object filterCriteria) {
                        string s = (string)filterCriteria;
-                       if (s.EndsWith ("*"))
-                               return m.Name.ToLower ().StartsWith (s.Substring (0, s.Length - 1).ToLower ());
-                       else
-                               return String.Compare (m.Name, s, true) == 0;
+                       if (s.Length > 0 && s [s.Length - 1] == '*')
+                               return m.Name.StartsWith (s.Substring (0, s.Length - 1), StringComparison.OrdinalIgnoreCase);
+                       
+                       return String.Equals (m.Name, s, StringComparison.OrdinalIgnoreCase);
                }
 
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
index e6e25cd7c3cd26eacb8e4afe4e86435182227672..bca4e08ec99b27c6c02397a46db5bc77d2922934 100644 (file)
@@ -69,11 +69,11 @@ namespace System {
                        string name = (string) filterCriteria;
                        if (name == null || name.Length == 0 )
                                return false; // because m.Name cannot be null or empty
-                               
-                       if (name [name.Length-1] == '*')
-                               return string.CompareOrdinal (name, 0, m.Name, 0, name.Length-1) == 0;
-
-               return name.Equals (m.Name);                    
+                       
+                       if (name [name.Length - 1] == '*')
+                               return m.Name.StartsWith (name.Substring (0, name.Length - 1), StringComparison.Ordinal);
+                       
+                       return m.Name == name;
                }
 
                static bool FilterNameIgnoreCase_impl (MemberInfo m, object filterCriteria)
@@ -82,10 +82,10 @@ namespace System {
                        if (name == null || name.Length == 0 )
                                return false; // because m.Name cannot be null or empty
                                
-                       if (name [name.Length-1] == '*')
-                               return string.Compare (name, 0, m.Name, 0, name.Length-1, StringComparison.OrdinalIgnoreCase) == 0;
-
-                       return string.Equals (name, m.Name, StringComparison.OrdinalIgnoreCase);
+                       if (name [name.Length - 1] == '*')
+                               return m.Name.StartsWith (name.Substring (0, name.Length - 1), StringComparison.OrdinalIgnoreCase);
+                       
+                       return string.Equals (m.Name, name, StringComparison.OrdinalIgnoreCase);
                }
 
                static bool FilterAttribute_impl (MemberInfo m, object filterCriteria)