The caller (i.e. the buffer stream_t) will call the function again if NULL is returned (assuming !b_error and !b_eof).