Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 0cc20a8

Browse files
committed
index: Adjust namemask & mode when filling
1 parent f824259 commit 0cc20a8

File tree

1 file changed

+17
-14
lines changed

1 file changed

+17
-14
lines changed

src/index.c

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -879,6 +879,18 @@ void git_index_entry__init_from_stat(
879879
entry->file_size = st->st_size;
880880
}
881881

882+
static void index_entry_adjust_namemask(
883+
git_index_entry *entry,
884+
size_t path_length)
885+
{
886+
entry->flags &= ~GIT_IDXENTRY_NAMEMASK;
887+
888+
if (path_length < GIT_IDXENTRY_NAMEMASK)
889+
entry->flags |= path_length & GIT_IDXENTRY_NAMEMASK;
890+
else
891+
entry->flags |= GIT_IDXENTRY_NAMEMASK;
892+
}
893+
882894
static int index_entry_create(
883895
git_index_entry **out,
884896
git_repository *repo,
@@ -1279,13 +1291,7 @@ static int index_insert(
12791291

12801292
/* make sure that the path length flag is correct */
12811293
path_length = ((struct entry_internal *)entry)->pathlen;
1282-
1283-
entry->flags &= ~GIT_IDXENTRY_NAMEMASK;
1284-
1285-
if (path_length < GIT_IDXENTRY_NAMEMASK)
1286-
entry->flags |= path_length & GIT_IDXENTRY_NAMEMASK;
1287-
else
1288-
entry->flags |= GIT_IDXENTRY_NAMEMASK;
1294+
index_entry_adjust_namemask(entry, path_length);
12891295

12901296
/* this entry is now up-to-date and should not be checked for raciness */
12911297
entry->flags_extended |= GIT_IDXENTRY_UPTODATE;
@@ -1561,10 +1567,11 @@ int git_index__fill(git_index *index, const git_vector *source_entries)
15611567
if ((ret = index_entry_dup(&entry, index, source_entry)) < 0)
15621568
break;
15631569

1570+
index_entry_adjust_namemask(entry, ((struct entry_internal *)entry)->pathlen);
15641571
entry->flags_extended |= GIT_IDXENTRY_UPTODATE;
1572+
entry->mode = git_index__create_mode(entry->mode);
15651573

1566-
ret = git_vector_insert(&index->entries, entry);
1567-
if (ret < 0)
1574+
if ((ret = git_vector_insert(&index->entries, entry)) < 0)
15681575
break;
15691576

15701577
INSERT_IN_MAP(index, entry, ret);
@@ -2889,11 +2896,7 @@ static int read_tree_cb(
28892896
entry->flags_extended = 0;
28902897
}
28912898

2892-
if (path.size < GIT_IDXENTRY_NAMEMASK)
2893-
entry->flags = path.size & GIT_IDXENTRY_NAMEMASK;
2894-
else
2895-
entry->flags = GIT_IDXENTRY_NAMEMASK;
2896-
2899+
index_entry_adjust_namemask(entry, path.size);
28972900
git_buf_free(&path);
28982901

28992902
if (git_vector_insert(data->new_entries, entry) < 0) {

0 commit comments

Comments
 (0)