aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2016-04-05 21:10:41 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2016-04-05 21:10:41 -0700
commit092d0478c3729689b7f76eb5674eb55d8d33e47c (patch)
treeef7cf351288711caa454caf145951164a833e67e
parent485c5a4ebd02279ba88ffedf026e384197820668 (diff)
downloadsubsurface-092d0478c3729689b7f76eb5674eb55d8d33e47c.tar.gz
git storage: compare with correct SHA when checking if cache is current
Otherwise by the time we make the comparison the saved_git_id has already been updated. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--core/file.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/core/file.c b/core/file.c
index 1337da3a2..685fa82a7 100644
--- a/core/file.c
+++ b/core/file.c
@@ -440,24 +440,28 @@ int check_git_sha(const char *filename)
struct git_repository *git;
const char *branch = NULL;
+ char *current_sha = strdup(saved_git_id);
git = is_git_repository(filename, &branch, NULL, false);
if (prefs.cloud_git_url &&
strstr(filename, prefs.cloud_git_url)
- && git == dummy_git_repository)
+ && git == dummy_git_repository) {
/* opening the cloud storage repository failed for some reason,
* so we don't know if there is additional data in the remote */
+ free(current_sha);
return 1;
-
+ }
/* if this is a git repository, do we already have this exact state loaded ?
* get the SHA and compare with what we currently have */
if (git && git != dummy_git_repository) {
const char *sha = get_sha(git, branch);
if (!same_string(sha, "") &&
- same_string(sha, saved_git_id)) {
+ same_string(sha, current_sha)) {
fprintf(stderr, "already have loaded SHA %s - don't load again\n", sha);
+ free(current_sha);
return 0;
}
}
+ free(current_sha);
return 1;
}