зеркало из https://github.com/microsoft/git.git
sparse-checkout: fix OOM error with mixed patterns
Add a test to t1091-sparse-checkout-builtin.sh that would result in an infinite loop and out-of-memory error before this change. The issue relies on having non-cone-mode patterns while trying to modify the patterns in cone-mode. The fix is simple, allowing us to break from the loop when the input path does not contain a slash, as the "dir" pattern we added does not. This is only a fix to the critical out-of-memory error. A better response to such a strange state will follow in a later change. Reported-by: Calbabreaker <calbabreaker@gmail.com> Helped-by: Taylor Blau <me@ttaylorr.com> Reviewed-by: Elijah Newren <newren@gmail.com> Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
a481d4378c
Коммит
391c3a1020
|
@ -483,7 +483,7 @@ static void insert_recursive_pattern(struct pattern_list *pl, struct strbuf *pat
|
|||
char *oldpattern = e->pattern;
|
||||
size_t newlen;
|
||||
|
||||
if (slash == e->pattern)
|
||||
if (!slash || slash == e->pattern)
|
||||
break;
|
||||
|
||||
newlen = slash - e->pattern;
|
||||
|
|
|
@ -103,6 +103,17 @@ test_expect_success 'clone --sparse' '
|
|||
check_files clone a
|
||||
'
|
||||
|
||||
test_expect_success 'switching to cone mode with non-cone mode patterns' '
|
||||
git init bad-patterns &&
|
||||
(
|
||||
cd bad-patterns &&
|
||||
git sparse-checkout init &&
|
||||
git sparse-checkout add dir &&
|
||||
git config core.sparseCheckoutCone true &&
|
||||
git sparse-checkout add dir
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'interaction with clone --no-checkout (unborn index)' '
|
||||
git clone --no-checkout "file://$(pwd)/repo" clone_no_checkout &&
|
||||
git -C clone_no_checkout sparse-checkout init --cone &&
|
||||
|
|
Загрузка…
Ссылка в новой задаче