Remove FD on close.
authorpbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 1 Nov 2006 01:44:16 +0000 (01:44 +0000)
committerpbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 1 Nov 2006 01:44:16 +0000 (01:44 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2207 c046a42c-6fe2-441c-8c8c-71466251a162

vl.c

diff --git a/vl.c b/vl.c
index d047eb4..447da38 100644 (file)
--- a/vl.c
+++ b/vl.c
@@ -1228,6 +1228,11 @@ static void fd_chr_read(void *opaque)
     if (len == 0)
         return;
     size = read(s->fd_in, buf, len);
+    if (size == 0) {
+        /* FD has been closed. Remove it from the active list.  */
+        qemu_set_fd_handler2(s->fd_in, NULL, NULL, NULL, NULL);
+        return;
+    }
     if (size > 0) {
         s->fd_read(s->fd_opaque, buf, size);
     }