Merge branch 'jh/memihash-opt'

Hotfix for a topic that is already in 'master'.

* jh/memihash-opt:
  p0004: make perf test executable
  t3008: skip lazy-init test on a single-core box
  test-online-cpus: helper to return cpu count
  name-hash: fix buffer overrun
This commit is contained in:
Junio C Hamano 2017-04-19 21:37:25 -07:00
Родитель 5feb8b8429 c9d4999155
Коммит 8377f34540
6 изменённых файлов: 40 добавлений и 1 удалений

Просмотреть файл

@ -626,6 +626,7 @@ TEST_PROGRAMS_NEED_X += test-line-buffer
TEST_PROGRAMS_NEED_X += test-match-trees
TEST_PROGRAMS_NEED_X += test-mergesort
TEST_PROGRAMS_NEED_X += test-mktemp
TEST_PROGRAMS_NEED_X += test-online-cpus
TEST_PROGRAMS_NEED_X += test-parse-options
TEST_PROGRAMS_NEED_X += test-path-utils
TEST_PROGRAMS_NEED_X += test-prio-queue

Просмотреть файл

@ -342,7 +342,9 @@ static int handle_range_dir(
* Scan forward in the index array for index entries having the same
* path prefix (that are also in this directory).
*/
if (strncmp(istate->cache[k_start + 1]->name, prefix->buf, prefix->len) > 0)
if (k_start + 1 >= k_end)
k = k_end;
else if (strncmp(istate->cache[k_start + 1]->name, prefix->buf, prefix->len) > 0)
k = k_start + 1;
else if (strncmp(istate->cache[k_end - 1]->name, prefix->buf, prefix->len) == 0)
k = k_end;

1
t/helper/.gitignore поставляемый
Просмотреть файл

@ -16,6 +16,7 @@
/test-match-trees
/test-mergesort
/test-mktemp
/test-online-cpus
/test-parse-options
/test-path-utils
/test-prio-queue

Просмотреть файл

@ -0,0 +1,8 @@
#include "git-compat-util.h"
#include "thread-utils.h"
int cmd_main(int argc, const char **argv)
{
printf("%d\n", online_cpus());
return 0;
}

0
t/perf/p0004-lazy-init-name-hash.sh Normal file → Executable file
Просмотреть файл

Просмотреть файл

@ -0,0 +1,27 @@
#!/bin/sh
test_description='Test the lazy init name hash with various folder structures'
. ./test-lib.sh
if test 1 -eq $($GIT_BUILD_DIR/t/helper/test-online-cpus)
then
skip_all='skipping lazy-init tests, single cpu'
test_done
fi
LAZY_THREAD_COST=2000
test_expect_success 'no buffer overflow in lazy_init_name_hash' '
(
test_seq $LAZY_THREAD_COST | sed "s/^/a_/"
echo b/b/b
test_seq $LAZY_THREAD_COST | sed "s/^/c_/"
test_seq 50 | sed "s/^/d_/" | tr "\n" "/"; echo d
) |
sed "s/^/100644 $EMPTY_BLOB /" |
git update-index --index-info &&
test-lazy-init-name-hash -m
'
test_done