Commit 8a42fca8ab01e340d7099ee3f5988bf7b4c51768

Stefan Sperling 2019-02-22T11:39:44

fix trigger_log_thread() would run forever in case the thread had an error

diff --git a/tog/tog.c b/tog/tog.c
index dc9aba7..ea459c1 100644
--- a/tog/tog.c
+++ b/tog/tog.c
@@ -1250,6 +1250,9 @@ trigger_log_thread(int load_all, int *commits_needed, int *log_complete,
     pthread_cond_t *need_commits)
 {
 	int errcode;
+	int max_wait = 20;
+
+	halfdelay(1); /* fast refresh while loading commits */
 
 	while (*commits_needed > 0) {
 		if (*log_complete)
@@ -1267,14 +1270,13 @@ trigger_log_thread(int load_all, int *commits_needed, int *log_complete,
 		if (errcode)
 			return got_error_set_errno(errcode);
 
-		if (*commits_needed > 0 && !load_all) {
+		if (*commits_needed > 0 && (!load_all || --max_wait <= 0)) {
 			/*
 			 * Thread is not done yet; lose a key press
 			 * and let the user retry... this way the GUI
 			 * remains interactive while logging deep paths
 			 * with few commits in history.
 			 */
-			halfdelay(1); /* fast refresh while loading */
 			return NULL;
 		}
 	}