This is queued as rj/strvec-splice-fix, and t/unit-tests/bin/unit-tests dies of leaks under leak-check. $ t/unit-tests/bin/unit-tests TAP version 13 # start of suite 1: ctype ok 1 - ctype::isspace ok 2 - ctype::isdigit ok 3 - ctype::isalpha ok 4 - ctype::isalnum ok 5 - ctype::is_glob_special ok 6 - ctype::is_regex_special ok 7 - ctype::is_pathspec_magic ok 8 - ctype::isascii ok 9 - ctype::islower ok 10 - ctype::isupper ok 11 - ctype::iscntrl ok 12 - ctype::ispunct ok 13 - ctype::isxdigit ok 14 - ctype::isprint # start of suite 2: strvec ok 15 - strvec::init ok 16 - strvec::dynamic_init ok 17 - strvec::clear ok 18 - strvec::push ok 19 - strvec::pushf ok 20 - strvec::pushl ok 21 - strvec::pushv not ok 22 - strvec::splice_just_initialized_strvec --- reason: | String mismatch: (&vec)->v[i] != expect[i] 'bar' != '(null)' at: file: 't/unit-tests/strvec.c' line: 97 function: 'test_strvec__splice_just_initialized_strvec' --- ok 23 - strvec::splice_with_same_size_replacement ok 24 - strvec::splice_with_smaller_replacement ok 25 - strvec::splice_with_bigger_replacement ok 26 - strvec::splice_with_empty_replacement ok 27 - strvec::splice_with_empty_original ok 28 - strvec::splice_at_tail ok 29 - strvec::replace_at_head ok 30 - strvec::replace_at_tail ok 31 - strvec::replace_in_between ok 32 - strvec::replace_with_substring ok 33 - strvec::remove_at_head ok 34 - strvec::remove_at_tail ok 35 - strvec::remove_in_between ok 36 - strvec::pop_empty_array ok 37 - strvec::pop_non_empty_array ok 38 - strvec::split_empty_string ok 39 - strvec::split_single_item ok 40 - strvec::split_multiple_items ok 41 - strvec::split_whitespace_only ok 42 - strvec::split_multiple_consecutive_whitespaces ok 43 - strvec::detach ================================================================= ==5178==ERROR: LeakSanitizer: detected memory leaks Direct leak of 192 byte(s) in 1 object(s) allocated from: #0 0x5600496ec825 in __interceptor_realloc (/usr/local/google/home/jch/w/git.git/t/unit-tests/bin/unit-tests+0x67825) (BuildId: 6efbef9c6f87bfa879e770b463031b396d4d5efe) #1 0x56004973b4cd in xrealloc /usr/local/google/home/jch/w/git.git/wrapper.c:140:8 #2 0x560049714c6f in strvec_splice /usr/local/google/home/jch/w/git.git/strvec.c:67:3 #3 0x5600496f0c1d in test_strvec__splice_just_initialized_strvec /usr/local/google/home/jch/w/git.git/t/unit-tests/strvec.c:96:2 #4 0x5600496f627b in clar_run_test /usr/local/google/home/jch/w/git.git/t/unit-tests/clar/clar.c:315:3 #5 0x5600496f46fa in clar_run_suite /usr/local/google/home/jch/w/git.git/t/unit-tests/clar/clar.c:412:3 #6 0x5600496f43e1 in clar_test_run /usr/local/google/home/jch/w/git.git/t/unit-tests/clar/clar.c:608:4 #7 0x5600496f4bdf in clar_test /usr/local/google/home/jch/w/git.git/t/unit-tests/clar/clar.c:651:11 #8 0x5600496f787c in cmd_main /usr/local/google/home/jch/w/git.git/t/unit-tests/unit-test.c:42:8 #9 0x5600496f793a in main /usr/local/google/home/jch/w/git.git/common-main.c:9:11 #10 0x7f59ea91dc89 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16 Direct leak of 48 byte(s) in 1 object(s) allocated from: #0 0x5600496ec640 in __interceptor_calloc (/usr/local/google/home/jch/w/git.git/t/unit-tests/bin/unit-tests+0x67640) (BuildId: 6efbef9c6f87bfa879e770b463031b396d4d5efe) #1 0x5600496f4cee in clar__fail /usr/local/google/home/jch/w/git.git/t/unit-tests/clar/clar.c:687:15 #2 0x5600496f5f25 in clar__assert_equal /usr/local/google/home/jch/w/git.git/t/unit-tests/clar/clar.c:844:3 #3 0x5600496f0db6 in test_strvec__splice_just_initialized_strvec /usr/local/google/home/jch/w/git.git/t/unit-tests/strvec.c:97:2 #4 0x5600496f627b in clar_run_test /usr/local/google/home/jch/w/git.git/t/unit-tests/clar/clar.c:315:3 #5 0x5600496f46fa in clar_run_suite /usr/local/google/home/jch/w/git.git/t/unit-tests/clar/clar.c:412:3 #6 0x5600496f43e1 in clar_test_run /usr/local/google/home/jch/w/git.git/t/unit-tests/clar/clar.c:608:4 #7 0x5600496f4bdf in clar_test /usr/local/google/home/jch/w/git.git/t/unit-tests/clar/clar.c:651:11 #8 0x5600496f787c in cmd_main /usr/local/google/home/jch/w/git.git/t/unit-tests/unit-test.c:42:8 #9 0x5600496f793a in main /usr/local/google/home/jch/w/git.git/common-main.c:9:11 #10 0x7f59ea91dc89 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16 Indirect leak of 18 byte(s) in 1 object(s) allocated from: #0 0x5600496ec3c6 in __interceptor_malloc (/usr/local/google/home/jch/w/git.git/t/unit-tests/bin/unit-tests+0x673c6) (BuildId: 6efbef9c6f87bfa879e770b463031b396d4d5efe) #1 0x7f59ea9964f9 in strdup string/strdup.c:42:15 #2 0x296c6c756e28271f (<unknown module>) Indirect leak of 4 byte(s) in 1 object(s) allocated from: #0 0x5600496ec3c6 in __interceptor_malloc (/usr/local/google/home/jch/w/git.git/t/unit-tests/bin/unit-tests+0x673c6) (BuildId: 6efbef9c6f87bfa879e770b463031b396d4d5efe) #1 0x7f59ea9964f9 in strdup string/strdup.c:42:15 SUMMARY: LeakSanitizer: 262 byte(s) leaked in 4 allocation(s).