chiark / gitweb /
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 d4cc2ddfad5cc854a2a4f372b3da2dec06eaae6e..49b00ed21b0d8bc12510300963079d3ca41fe07e 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")
@@ -88,12 +88,14 @@ (defun socket-status (socket seconds microseconds)
       (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