Реализован очень странный пример, но все корректно
Теперь я понял, зачем по умолчанию ты сохраняешь EOF в buf