Hi, usocket

Just found a bug on 0.4.x branch, on LispWorks (non-win32 version).

The WAIT-FOR-INPUT-INTERNAL function has a TRUNCATE operation on TIMEOUT:

  (defun wait-for-input-internal (wait-list &key timeout)
    (with-mapped-conditions ()
      ;; unfortunately, it's impossible to share code between
      ;; non-win32 and win32 platforms...
;; Can we have a sane -pref. complete [UDP!?]- API next time, please?
      (dolist (x (wait-list-waiters wait-list))
        (mp:notice-fd (os-socket-handle x)))
(mp:process-wait-with-timeout "Waiting for a socket to become active" (truncate timeout) ;; IT'S HERE!!!!!!!!!!!!!!!!!!!!!!!!!
                                    #'(lambda (socks)
                                        (let (rv)
                                          (dolist (x socks rv)
                                            (when (usocket-listen x)
                                              (setf (state x) :READ
                                                    rv t)))))
                                    (wait-list-waiters wait-list))
      (dolist (x (wait-list-waiters wait-list))
        (mp:unnotice-fd (os-socket-handle x)))
      wait-list)))

So if I call WAIT-FOR-INPUT on a usocket instance with no TIMEOUT keyword supply, (TRUNCATE NIL) will be called, and error happens. How to fix this issue to make sure I can just wait "infinitely" on a usocket?

Regards,

Chun Tian (binghe)

_______________________________________________
usocket-devel mailing list
usocket-devel@common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/usocket-devel

Reply via email to