From 487b3bc045d16796d60a875aada6f047dac22836 Mon Sep 17 00:00:00 2001 From: Naveed Khan Date: Sat, 15 Aug 2026 19:50:47 +0530 Subject: [PATCH] return false from AbstractLinkedList addAll for an empty collection --- .../collections4/list/AbstractLinkedList.java | 3 +++ .../list/AbstractLinkedListJava21.java | 3 +++ .../collections4/list/AbstractListTest.java | 15 +++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/src/main/java/org/apache/commons/collections4/list/AbstractLinkedList.java b/src/main/java/org/apache/commons/collections4/list/AbstractLinkedList.java index e57cf9bdf6..86a7b0b728 100644 --- a/src/main/java/org/apache/commons/collections4/list/AbstractLinkedList.java +++ b/src/main/java/org/apache/commons/collections4/list/AbstractLinkedList.java @@ -588,6 +588,9 @@ public boolean addAll(final Collection coll) { @Override public boolean addAll(final int index, final Collection coll) { final Node node = getNode(index, true); + if (coll.isEmpty()) { + return false; + } for (final E e : coll) { addNodeBefore(node, e); } diff --git a/src/main/java/org/apache/commons/collections4/list/AbstractLinkedListJava21.java b/src/main/java/org/apache/commons/collections4/list/AbstractLinkedListJava21.java index 6a3e43f17b..79f422e0dc 100644 --- a/src/main/java/org/apache/commons/collections4/list/AbstractLinkedListJava21.java +++ b/src/main/java/org/apache/commons/collections4/list/AbstractLinkedListJava21.java @@ -592,6 +592,9 @@ public boolean addAll(final Collection coll) { @Override public boolean addAll(final int index, final Collection coll) { final Node node = getNode(index, true); + if (coll.isEmpty()) { + return false; + } for (final E e : coll) { addNodeBefore(node, e); } diff --git a/src/test/java/org/apache/commons/collections4/list/AbstractListTest.java b/src/test/java/org/apache/commons/collections4/list/AbstractListTest.java index 9f2f56d2e0..b2eb078c6a 100644 --- a/src/test/java/org/apache/commons/collections4/list/AbstractListTest.java +++ b/src/test/java/org/apache/commons/collections4/list/AbstractListTest.java @@ -466,6 +466,21 @@ void testFullListSerialization() throws IOException, ClassNotFoundException { assertEquals(size, list2.size(), "Both lists are same size"); } + /** + * Tests that {@link List#addAll(Collection)} and {@link List#addAll(int, Collection)} + * return false and leave the list unchanged when the collection to add is empty. + */ + @Test + void testListAddAllEmptyReturnsFalse() { + if (!isAddSupported()) { + return; + } + final List list = makeObject(); + assertFalse(list.addAll(Collections.emptyList()), "addAll of an empty collection must return false"); + assertFalse(list.addAll(0, Collections.emptyList()), "addAll(index) of an empty collection must return false"); + assertTrue(list.isEmpty()); + } + /** * Tests {@link List#add(int,Object)}. */