diff --git a/src/Mono.Android/Android.Runtime/JavaList.cs b/src/Mono.Android/Android.Runtime/JavaList.cs index 6d12575963c..5dd329e71cb 100644 --- a/src/Mono.Android/Android.Runtime/JavaList.cs +++ b/src/Mono.Android/Android.Runtime/JavaList.cs @@ -392,7 +392,7 @@ public unsafe void Insert (int index, object? item) public void Remove (object? item) { int i = IndexOf (item); - if (i < 0 && i >= Count) + if (i < 0 || i >= Count) return; RemoveAt (i); } @@ -627,7 +627,7 @@ public virtual bool IsEmpty { public virtual bool Remove (Java.Lang.Object? item) { int i = IndexOf (item); - if (i < 0 && i >= Count) + if (i < 0 || i >= Count) return false; RemoveAt (i); return true; @@ -964,7 +964,7 @@ public unsafe void Insert (int index, T item) public bool Remove (T item) { int i = IndexOf (item); - if (i < 0 && i >= Count) + if (i < 0 || i >= Count) return false; RemoveAt (i); return true; diff --git a/tests/Mono.Android-Tests/Mono.Android-Tests/Java.Interop/JavaListTest.cs b/tests/Mono.Android-Tests/Mono.Android-Tests/Java.Interop/JavaListTest.cs index 3ac3c8220f9..5b096ad8cbc 100644 --- a/tests/Mono.Android-Tests/Mono.Android-Tests/Java.Interop/JavaListTest.cs +++ b/tests/Mono.Android-Tests/Mono.Android-Tests/Java.Interop/JavaListTest.cs @@ -130,6 +130,14 @@ public void RemoveAt () Assert.AreEqual ("foo", list [1]); } + [Test] + public void RemoveNonExistentItemDoesNotThrow () + { + list.Add ("foo"); + Assert.DoesNotThrow (() => list.Remove ("bar")); + Assert.AreEqual (1, list.Count); + } + [Test] public void Set () {