commit - d188eb1946acd5671794bb6cbdd256d7b962a669
commit + 5a950d099a15fa3dc29590f3a8e90de9d6e1972b
blob - 414cf45f495487020f948b4b0c3e6a45ef730da9
blob + a35884552cf66d678f0db623e1dd92d976a7014e
--- lib/got_lib_worktree.h
+++ lib/got_lib_worktree.h
struct got_object_id *base_commit_id;
char *head_ref_name;
uuid_t uuid;
- int *pack_fds;
/*
* File descriptor for the lock file, open while a work tree is open.
blob - 8178c5fa66d216143d6c46befa61dc365b4afe68
blob + 529f4b6767b84a31e24d93b402c6a3c8226cdd74
--- lib/worktree_open.c
+++ lib/worktree_open.c
int version, fd = -1;
const char *errstr;
struct got_repository *repo = NULL;
+ int *pack_fds = NULL;
uint32_t uuid_status;
*worktree = NULL;
goto done;
}
- err = got_repo_pack_fds_open(&(*worktree)->pack_fds);
+ err = got_repo_pack_fds_open(&pack_fds);
if (err)
goto done;
- err = got_repo_open(&repo, (*worktree)->repo_path, NULL,
- (*worktree)->pack_fds);
+ err = got_repo_open(&repo, (*worktree)->repo_path, NULL, pack_fds);
if (err)
goto done;
const struct got_error *close_err = got_repo_close(repo);
if (err == NULL)
err = close_err;
+ }
+ if (pack_fds) {
+ const struct got_error *pack_err =
+ got_repo_pack_fds_close(pack_fds);
+ if (err == NULL)
+ err = pack_err;
}
free(path_got);
free(path_lock);
if (close(worktree->root_fd) == -1 && err == NULL)
err = got_error_from_errno2("close",
got_worktree_get_root_path(worktree));
- if (worktree->pack_fds) {
- const struct got_error *pack_err =
- got_repo_pack_fds_close(worktree->pack_fds);
- if (err == NULL)
- err = pack_err;
- }
free(worktree->repo_path);
free(worktree->path_prefix);
free(worktree->base_commit_id);