complete test coverage for array_list.c and delete unreachable code default tip

Sun, 23 Nov 2025 13:30:07 +0100

author
Mike Becker <universe@uap-core.de>
date
Sun, 23 Nov 2025 13:30:07 +0100
changeset 1509
0437871200d6
parent 1508
dfc0ddd9571e

complete test coverage for array_list.c and delete unreachable code

src/array_list.c file | annotate | diff | comparison | revisions
--- a/src/array_list.c	Sun Nov 23 13:15:19 2025 +0100
+++ b/src/array_list.c	Sun Nov 23 13:30:07 2025 +0100
@@ -510,20 +510,11 @@
             // duplicates allowed or nothing inserted yet: simply copy everything
             memcpy(dest, src, elem_size * (elem_count - si));
         } else {
-            if (dest != *target) {
-                // skip all source elements that equal the last element
-                char *last = dest - elem_size;
-                while (si < elem_count) {
-                    if (last != NULL && cmp_func(last, src) == 0) {
-                        src += elem_size;
-                        si++;
-                        (*size)--;
-                    } else {
-                        break;
-                    }
-                }
-            }
-            // we must check the elements in the chunk one by one
+            // we must check the remaining source elements one by one
+            // to skip the duplicates.
+            // Note that no source element can equal the last element in the
+            // destination, because that would have created an insertion point
+            // and a buffer, s.t. the above loop already handled the duplicates
             while (si < elem_count) {
                 // find a chain of elements that can be copied
                 size_t copy_len = 1, skip_len = 0;

mercurial