mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-06 05:01:54 +00:00
index: set last written index entry in foreach-entry-loop
The last written disk entry is currently being written inside of the function `write_disk_entry`. Make behavior a bit more obviously by instead setting it inside of `write_entries` while iterating all entries.
This commit is contained in:
parent
11d0be23c4
commit
8ceb890b77
15
src/index.c
15
src/index.c
@ -2580,7 +2580,7 @@ static bool is_index_extended(git_index *index)
|
|||||||
return (extended > 0);
|
return (extended > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const char **last)
|
static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const char *last)
|
||||||
{
|
{
|
||||||
void *mem = NULL;
|
void *mem = NULL;
|
||||||
struct entry_short *ondisk;
|
struct entry_short *ondisk;
|
||||||
@ -2592,7 +2592,7 @@ static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const cha
|
|||||||
path_len = ((struct entry_internal *)entry)->pathlen;
|
path_len = ((struct entry_internal *)entry)->pathlen;
|
||||||
|
|
||||||
if (last) {
|
if (last) {
|
||||||
const char *last_c = *last;
|
const char *last_c = last;
|
||||||
|
|
||||||
while (*path_start == *last_c) {
|
while (*path_start == *last_c) {
|
||||||
if (!*path_start || !*last_c)
|
if (!*path_start || !*last_c)
|
||||||
@ -2602,7 +2602,6 @@ static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const cha
|
|||||||
++same_len;
|
++same_len;
|
||||||
}
|
}
|
||||||
path_len -= same_len;
|
path_len -= same_len;
|
||||||
*last = entry->path;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entry->flags & GIT_IDXENTRY_EXTENDED)
|
if (entry->flags & GIT_IDXENTRY_EXTENDED)
|
||||||
@ -2668,8 +2667,7 @@ static int write_entries(git_index *index, git_filebuf *file)
|
|||||||
size_t i;
|
size_t i;
|
||||||
git_vector case_sorted, *entries;
|
git_vector case_sorted, *entries;
|
||||||
git_index_entry *entry;
|
git_index_entry *entry;
|
||||||
const char **last = NULL;
|
const char *last = NULL;
|
||||||
const char *empty = "";
|
|
||||||
|
|
||||||
/* If index->entries is sorted case-insensitively, then we need
|
/* If index->entries is sorted case-insensitively, then we need
|
||||||
* to re-sort it case-sensitively before writing */
|
* to re-sort it case-sensitively before writing */
|
||||||
@ -2682,11 +2680,14 @@ static int write_entries(git_index *index, git_filebuf *file)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (index->version >= INDEX_VERSION_NUMBER_COMP)
|
if (index->version >= INDEX_VERSION_NUMBER_COMP)
|
||||||
last = ∅
|
last = "";
|
||||||
|
|
||||||
git_vector_foreach(entries, i, entry)
|
git_vector_foreach(entries, i, entry) {
|
||||||
if ((error = write_disk_entry(file, entry, last)) < 0)
|
if ((error = write_disk_entry(file, entry, last)) < 0)
|
||||||
break;
|
break;
|
||||||
|
if (index->version >= INDEX_VERSION_NUMBER_COMP)
|
||||||
|
last = entry->path;
|
||||||
|
}
|
||||||
|
|
||||||
if (index->ignore_case)
|
if (index->ignore_case)
|
||||||
git_vector_free(&case_sorted);
|
git_vector_free(&case_sorted);
|
||||||
|
Loading…
Reference in New Issue
Block a user