зеркало из https://github.com/microsoft/git.git
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:
Коммит
8377f34540
1
Makefile
1
Makefile
|
@ -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;
|
||||
|
|
|
@ -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,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
|
Загрузка…
Ссылка в новой задаче