Fixed problem cause by SB-UNIX:UNIX-FAST-SELECT returning NIL sometimes
authorespen <espen>
Wed, 20 Jun 2007 14:28:48 +0000 (14:28 +0000)
committerespen <espen>
Wed, 20 Jun 2007 14:28:48 +0000 (14:28 +0000)
gtk/gtk.lisp

index 4b19e1c..844f41a 100644 (file)
@@ -20,7 +20,7 @@
 ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-;; $Id: gtk.lisp,v 1.74 2007-06-20 10:19:47 espen Exp $
+;; $Id: gtk.lisp,v 1.75 2007-06-20 14:28:48 espen Exp $
 
 
 (in-package "GTK")
       (sb-unix:fd-zero read-fds)
       (sb-unix:fd-set fd read-fds)
 
-      (unless (zerop (sb-unix:unix-fast-select 
-                     (1+ fd) (sb-alien:addr read-fds) nil nil 
-                     seconds microseconds))
-       (if (peek-char nil (car socket) nil)
-           :input
-         :eof)))))
+      (let ((num-fds-changed
+            (sb-unix:unix-fast-select
+             (1+ fd) (sb-alien:addr read-fds) nil nil 
+             seconds microseconds)))
+       (unless (or (not num-fds-changed) (zerop num-fds-changed))
+         (if (peek-char nil (car socket) nil)
+             :input
+           :eof))))))
 
 (defun %init-async-event-handling (display)
   (let ((style #?(or (featurep :cmu) (sbcl< 1 0 6)) :fd-handler