Why doesn a memory BIO work when a file does?
This can occur in several cases for example reading an S/MIME email message. The reason is that a memory BIO can do one of two things when all the data has been read from it. The default behaviour is to indicate that no more data is available and that the call should be retried, this is to allow the application to fill up the BIO again if necessary. Alternatively it can indicate that no more data is available and that EOF has been reached. If a memory BIO is to behave in the same way as a file this second behaviour is needed.