Kouhei Sutou
kou****@cozmi*****
2004年 4月 23日 (金) 01:38:16 JST
須藤です. In <20040****@mbox0*****> "[Anthy-dev 776] Re: testing framework" on Thu, 22 Apr 2004 13:58:12 +0900, YamaKen <yamak****@bp*****> wrote: > が、10回に1回程度の割合でnanosleepのループにはまってしまう事があ > るようです。 % uname -sr FreeBSD 5.2-RELEASE % gosh -V Gauche scheme interpreter, version 0.7.4.2 [utf-8] な環境で確認しました. 添付のパッチでどうでしょうか. > さらに、私の方のLinux環境では修正前と全く同じ動作(= > 動かない)でした。他の方のところではどうでしょうか? 手元の,下のような環境のDebian (sid)では,パッチを適用しても しなくても問題なく動いています. % uname -sr Linux 2.6.5-1-k7 % ls -l /lib/libc.so.6 lrwxrwxrwx 1 root root 13 2004-01-22 23:35 /lib/libc.so.6 -> libc-2.3.2.so % gosh -V Gauche scheme interpreter, version 0.7.4.2 [utf-8,pthreads] -------------- next part -------------- Index: test/uim-test-utils.scm =================================================================== --- test/uim-test-utils.scm (revision 740) +++ test/uim-test-utils.scm (working copy) @@ -1,5 +1,5 @@ (use gauche.process) -(use gauche.charconv) +(use gauche.selector) (use test.unit) (sys-putenv "LIBUIM_SCM_FILES" "./scm") @@ -14,15 +14,19 @@ (with-module test.unit add-test-case!)) (define *uim-process* #f) +(define *uim-selector* (make <selector>)) (define (uim sexp) (write sexp (process-input *uim-process*)) (flush-all-ports) (let ((output (process-output *uim-process*)) - (err (wrap-with-input-conversion (process-error *uim-process*) - #f - :buffer-size 0))) - (while (char-ready? err) - (sys-nanosleep 100)) + (err (process-error *uim-process*))) + (set! (port-buffering err) :none) + (selector-add! *uim-selector* + err + (lambda (sock flag) + (selector-delete! *uim-selector* sock #f #f)) + '(r)) + (selector-select *uim-selector*) (read err))) (define (uim-bool sexp)