mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-06 17:20:22 +00:00
attr_session: keep a temp buffer
This commit is contained in:
parent
d4b1b76701
commit
f58cc280c9
@ -861,6 +861,7 @@ void git_attr_session__free(git_attr_session *session)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
git_buf_free(&session->sysdir);
|
git_buf_free(&session->sysdir);
|
||||||
|
git_buf_free(&session->tmp);
|
||||||
|
|
||||||
memset(session, 0, sizeof(git_attr_session));
|
memset(session, 0, sizeof(git_attr_session));
|
||||||
}
|
}
|
||||||
|
@ -114,6 +114,7 @@ typedef struct {
|
|||||||
unsigned int init_setup:1,
|
unsigned int init_setup:1,
|
||||||
init_sysdir:1;
|
init_sysdir:1;
|
||||||
git_buf sysdir;
|
git_buf sysdir;
|
||||||
|
git_buf tmp;
|
||||||
} git_attr_session;
|
} git_attr_session;
|
||||||
|
|
||||||
extern int git_attr_session__init(git_attr_session *attr_session, git_repository *repo);
|
extern int git_attr_session__init(git_attr_session *attr_session, git_repository *repo);
|
||||||
|
@ -149,6 +149,7 @@ static int attr_cache_lookup(
|
|||||||
git_attr_file **out_file,
|
git_attr_file **out_file,
|
||||||
git_attr_file_entry **out_entry,
|
git_attr_file_entry **out_entry,
|
||||||
git_repository *repo,
|
git_repository *repo,
|
||||||
|
git_attr_session *attr_session,
|
||||||
git_attr_file_source source,
|
git_attr_file_source source,
|
||||||
const char *base,
|
const char *base,
|
||||||
const char *filename)
|
const char *filename)
|
||||||
@ -162,9 +163,12 @@ static int attr_cache_lookup(
|
|||||||
|
|
||||||
/* join base and path as needed */
|
/* join base and path as needed */
|
||||||
if (base != NULL && git_path_root(filename) < 0) {
|
if (base != NULL && git_path_root(filename) < 0) {
|
||||||
if (git_buf_joinpath(&path, base, filename) < 0)
|
git_buf *p = attr_session ? &attr_session->tmp : &path;
|
||||||
|
|
||||||
|
if (git_buf_joinpath(p, base, filename) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
filename = path.ptr;
|
|
||||||
|
filename = p->ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
relfile = filename;
|
relfile = filename;
|
||||||
@ -208,7 +212,7 @@ int git_attr_cache__get(
|
|||||||
git_attr_file *file = NULL, *updated = NULL;
|
git_attr_file *file = NULL, *updated = NULL;
|
||||||
|
|
||||||
if ((error = attr_cache_lookup(
|
if ((error = attr_cache_lookup(
|
||||||
&file, &entry, repo, source, base, filename)) < 0)
|
&file, &entry, repo, attr_session, source, base, filename)) < 0)
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
/* load file if we don't have one or if existing one is out of date */
|
/* load file if we don't have one or if existing one is out of date */
|
||||||
|
Loading…
Reference in New Issue
Block a user