summaryrefslogtreecommitdiff
path: root/lib/Handle.cc
diff options
context:
space:
mode:
authorPixel <Pixel>2001-11-28 14:59:50 +0000
committerPixel <Pixel>2001-11-28 14:59:50 +0000
commit0ddaa5127bf155ffb93f9da13381ad176b43a295 (patch)
tree8ce67d05aedf5d2e2fcb405e4c4b04facc3d5bad /lib/Handle.cc
parent5212a0752902e64bbd0e24b5c84edb0350e2d3f8 (diff)
Hopla
Diffstat (limited to 'lib/Handle.cc')
-rw-r--r--lib/Handle.cc6
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;
}