commit - ecb28ae0fb5fc4ab8a9c79cb6607c6fe2db50a90
commit + 55198a88d8490309f60f25b36b09ec8be9976f04
blob - 492ec5555d6c92bb2fdc90b5534f5d72884d3eb0
blob + 45a8fe04d48e1908069d942f6e70917321e90bf5
--- tog/tog.c
+++ tog/tog.c
int ncommits, width;
char *id_str, *header;
wchar_t *wline;
-
- entry = first;
- *selected = NULL;
- ncommits = 0;
- while (entry) {
- if (++ncommits - 1 == selected_idx) {
- *selected = entry;
- break;
- }
- entry = TAILQ_NEXT(entry, entry);
- }
- if (*selected == NULL)
- return got_error(GOT_ERR_RANGE);
err = got_object_id_str(&id_str, (*selected)->id);
if (err)
*/
err = queue_commits(graph, &commits, head_id, LINES, 1, repo,
in_repo_path);
- if (err && err->code != GOT_ERR_ITER_COMPLETED)
- goto done;
+ if (err) {
+ if (err->code != GOT_ERR_ITER_COMPLETED)
+ goto done;
+ err = NULL;
+ }
/*
* Find entry corresponding to the first commit to display.
switch (ch) {
case ERR:
if (errno) {
+ if (errno == EINTR)
+ break;
err = got_error_from_errno();
goto done;
}
break;
}
case KEY_RESIZE:
- if (selected > LINES - 1)
+ if (selected > LINES - 2)
selected = LINES - 2;
+ if (selected > commits.ncommits - 1)
+ selected = commits.ncommits - 1;
break;
case KEY_ENTER:
case '\r':