+hIsEOF handle = wantReadableHandle_ "hIsEOF" handle $ \Handle__{..} -> do
+
+ cbuf <- readIORef haCharBuffer
+ if not (isEmptyBuffer cbuf) then return False else do
+
+ bbuf <- readIORef haByteBuffer
+ if not (isEmptyBuffer bbuf) then return False else do
+
+ -- NB. do no decoding, just fill the byte buffer; see #3808
+ (r,bbuf') <- Buffered.fillReadBuffer haDevice bbuf
+ if r == 0
+ then return True
+ else do writeIORef haByteBuffer bbuf'
+ return False