summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: ad9f995)
raw | patch | inline | side by side (parent: ad9f995)
author | Jeff King <peff@peff.net> | |
Thu, 21 Aug 2008 01:40:44 +0000 (21:40 -0400) | ||
committer | Jonas Fonseca <fonseca@diku.dk> | |
Fri, 22 Aug 2008 09:43:34 +0000 (11:43 +0200) |
When we are reading from a pipe and receive a signal, our
read call fails and ferror() returns true. The current
behavior is to call end_update and report failure. However,
we can detect this situation by checking that errno is set
to success and continue the reading process.
You can provoke this behavior by running a "tig blame" that
takes a few seconds and then resizing the terminal that tig
is running in (you should get an incomplete blame output and
the error "Failed to read: Success").
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
read call fails and ferror() returns true. The current
behavior is to call end_update and report failure. However,
we can detect this situation by checking that errno is set
to success and continue the reading process.
You can provoke this behavior by running a "tig blame" that
takes a few seconds and then resizing the terminal that tig
is running in (you should get an incomplete blame output and
the error "Failed to read: Success").
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
tig.c | patch | blob | history |
index 6b111e43a3fede913e60ca16493eb39dfc60e338..8362ecf39b13c2cbc62b98cde24165e8cfb52fe3 100644 (file)
--- a/tig.c
+++ b/tig.c
update_view_title(view);
check_pipe:
- if (ferror(view->pipe)) {
+ if (ferror(view->pipe) && errno != 0) {
report("Failed to read: %s", strerror(errno));
end_update(view, TRUE);