diff options
author | Pixel <Pixel> | 2001-11-28 14:59:50 +0000 |
---|---|---|
committer | Pixel <Pixel> | 2001-11-28 14:59:50 +0000 |
commit | 0ddaa5127bf155ffb93f9da13381ad176b43a295 (patch) | |
tree | 8ce67d05aedf5d2e2fcb405e4c4b04facc3d5bad /lib/Handle.cc | |
parent | 5212a0752902e64bbd0e24b5c84edb0350e2d3f8 (diff) |
Hopla
Diffstat (limited to 'lib/Handle.cc')
-rw-r--r-- | lib/Handle.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/Handle.cc b/lib/Handle.cc index 4124231..253ddbf 100644 --- a/lib/Handle.cc +++ b/lib/Handle.cc @@ -26,7 +26,7 @@ ssize_t Handle::write(const void *buf, size_t count) throw (GeneralException) { done = true; errno = 0; if ((r = ::write(h, buf, count)) < 0) { - if ((!errno) || (errno = EAGAIN)) { + if ((!errno) || (errno == EAGAIN) || (errno == EINTR)) { // Avant de déclarer une erreur, on vérifie si ce n'est pas un // problème lié au fait qu'il n'y a plus de place libre. Cela peut // arriver si l'on agit sur un pipe ou un handle. Nous @@ -61,7 +61,7 @@ ssize_t Handle::read(void *buf, size_t count) throw (GeneralException) { errno = 0; if ((r = ::read(h, buf, count)) < 0) { - if ((!errno) || (errno = EAGAIN)) { + if ((!errno) || (errno == EAGAIN) || (errno == EINTR)) { // Avant de déclarer une erreur, on vérifie si ce n'est pas un // problème lié au fait qu'il n'y a plus d'octets. throw IOAgain(); @@ -133,6 +133,8 @@ void Handle::close() { ::close(h); } + h = -1; + closed = 1; } |