import GlaExts
import PrelIOBase
-import PrelHandle (readHandle, writeHandle, newHandle, getBMode__, getHandleFd )
+import PrelHandle (newHandle, getBMode__, getHandleFd,
+ freeFileObject, freeStdFileObject )
import IO
import Addr
import Foreign
+import Weak ( addForeignFinaliser )
import CString ( freeze, allocChars, packStringIO, unpackNBytesBAIO )
import PosixUtil
(or as a result of) program termination.
-}
#ifndef __PARALLEL_HASKELL__
- fo <-
- (if fd == stdInput || fd == stdOutput || fd == stdError then
- makeForeignObj fo (``&freeStdFile''::Addr)
- else
- makeForeignObj fo (``&freeFileObject''::Addr))
+ fo <- makeForeignObj fo
+ if fd == stdInput || fd == stdOutput || fd == stdError then
+ addForeignFinaliser fo (freeStdFileObject fo)
+ else
+ addForeignFinaliser fo (freeFileObject fo)
#endif
(bm, bf_size) <- getBMode__ fo
mkBuffer__ fo bf_size