@@ -94,24 +94,29 @@ OFFreeMemory(_writeBuffer); [super dealloc]; } -- (bool)lowlevelIsAtEndOfStream -{ - OF_UNRECOGNIZED_SELECTOR -} - - (size_t)lowlevelReadIntoBuffer: (void *)buffer length: (size_t)length { OF_UNRECOGNIZED_SELECTOR } - (size_t)lowlevelWriteBuffer: (const void *)buffer length: (size_t)length { OF_UNRECOGNIZED_SELECTOR } + +- (bool)lowlevelIsAtEndOfStream +{ + OF_UNRECOGNIZED_SELECTOR +} + +- (bool)lowlevelHasDataInReadBuffer +{ + return false; +} - (id)copy { return [self retain]; } @@ -1184,11 +1189,11 @@ } } - (bool)hasDataInReadBuffer { - return (_readBufferLength > 0); + return (_readBufferLength > 0 || [self lowlevelHasDataInReadBuffer]); } - (bool)canBlock { return _canBlock;