From 230e9476a733c8fb7089d20d4ea58948a96d48f6 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 22 May 2008 00:41:18 -0500 Subject: [PATCH] Fix race condition --- extra/io/unix/backend/backend.factor | 9 +++++++-- extra/io/windows/windows.factor | 6 ++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/extra/io/unix/backend/backend.factor b/extra/io/unix/backend/backend.factor index 2a85beac02..67856a0570 100755 --- a/extra/io/unix/backend/backend.factor +++ b/extra/io/unix/backend/backend.factor @@ -24,8 +24,13 @@ TUPLE: fd fd disposed ; [ >>fd ] tri ; -M: fd dispose* - [ cancel-operation ] [ fd>> close-file ] bi ; +M: fd dispose + dup disposed>> [ drop ] [ + [ cancel-operation ] + [ t >>disposed drop ] + [ fd>> close-file ] + tri + ] if ; M: fd handle-fd dup check-disposed fd>> ; diff --git a/extra/io/windows/windows.factor b/extra/io/windows/windows.factor index abfffdf93a..5e10389c44 100755 --- a/extra/io/windows/windows.factor +++ b/extra/io/windows/windows.factor @@ -24,8 +24,10 @@ TUPLE: win32-file < win32-handle ptr ; : ( handle -- win32-file ) win32-file new-win32-handle ; -M: win32-file dispose* - [ cancel-operation ] [ call-next-method ] bi ; +M: win32-file dispose + dup disposed>> [ drop ] [ + [ cancel-operation ] [ call-next-method ] bi + ] if ; HOOK: CreateFile-flags io-backend ( DWORD -- DWORD ) HOOK: FileArgs-overlapped io-backend ( port -- overlapped/f )