Osamu NAKAMURA
naka****@hasak*****
2004年 9月 1日 (水) 21:58:20 JST
中村です。 ふと、 At Wed, 01 Sep 2004 00:10:24 -1000 (HST), Shiro Kawai wrote: > > (define-syntax with-umask > (syntax-rules () > ((with-umask (mask) body ...) > (let ((oldmask (sys-umask mask))) > (dynamic-wind > (lambda () (sys-umask mask)) > (lambda () body ...) > (lambda () (sys-umask oldmask))))) > )) ここ > (let ((oldmask (sys-umask mask))) > (dynamic-wind > (lambda () (sys-umask mask)) を (let ((oldmask #f)) (dynamic-wind (lambda () (set! oldmask (sys-umask mask))) とすると、 この問題 > 実はこのコードは完全ではありません。最初のsys-umaskの呼び出し > 直後からdynamic-windの開始までの間にシグナルが入って制御が > 他に移ると、umaskの設定がおかしくなります。 は回避できませんか? などと思ったのですが、破壊的代入が美しくない? --