commit - 7cd528337bab10d64ef73bb1a6e40c6203539e4d
commit + 1af5eddf2244e4d5028f2a6dba01f7025f1d6e1e
blob - df00bf13e3f2baf15f30f3aec764842953fb213d
blob + 456165944d429f213c393ed31202435dc158966a
--- tog/tog.c
+++ tog/tog.c
const char *in_repo_path;
struct got_object_id *start_id;
struct got_repository *repo;
+ int *pack_fds;
int log_complete;
sig_atomic_t *quit;
struct commit_queue_entry **first_displayed_entry;
if (s->thread_args.repo) {
err = got_repo_close(s->thread_args.repo);
s->thread_args.repo = NULL;
+ }
+
+ if (s->thread_args.pack_fds) {
+ const struct got_error *pack_err =
+ got_repo_pack_fds_close(s->thread_args.pack_fds);
+ if (err == NULL)
+ err = pack_err;
+ s->thread_args.pack_fds = NULL;
}
if (s->thread_args.graph) {
struct got_repository *thread_repo = NULL;
struct got_commit_graph *thread_graph = NULL;
int errcode;
- int *pack_fds = NULL;
if (in_repo_path != s->in_repo_path) {
free(s->in_repo_path);
view->search_start = search_start_log_view;
view->search_next = search_next_log_view;
- err = got_repo_pack_fds_open(&pack_fds);
- if (err)
- goto done;
+ if (s->thread_args.pack_fds == NULL) {
+ err = got_repo_pack_fds_open(&s->thread_args.pack_fds);
+ if (err)
+ goto done;
+ }
err = got_repo_open(&thread_repo, got_repo_get_path(repo), NULL,
- pack_fds);
+ s->thread_args.pack_fds);
if (err)
goto done;
err = got_commit_graph_open(&thread_graph, s->in_repo_path,
s->thread_args.search_next_done = &view->search_next_done;
s->thread_args.regex = &view->regex;
done:
- if (pack_fds) {
- const struct got_error *pack_err =
- got_repo_pack_fds_close(pack_fds);
- if (err == NULL)
- err = pack_err;
- }
if (err)
close_log_view(view);
return err;
struct tog_view *ref_view = NULL;
struct commit_queue_entry *entry;
int begin_x = 0, n, nscroll = view->nlines - 1;
- int *pack_fds = NULL;
if (s->thread_args.load_all) {
if (ch == KEY_BACKSPACE)
} else /* 'B' */
s->log_branches = !s->log_branches;
- err = got_repo_pack_fds_open(&pack_fds);
- if (err)
- return err;
- err = got_repo_open(&s->thread_args.repo,
- got_repo_get_path(s->repo), NULL, pack_fds);
- if (err)
- return err;
- err = got_repo_pack_fds_close(pack_fds);
+ err = got_repo_open(&s->thread_args.repo,
+ got_repo_get_path(s->repo), NULL,
+ s->thread_args.pack_fds);
if (err)
return err;
tog_free_refs();