There's code in EditCharacterInput() that causes that template function
to silently return false if it is invoked at the end of the input file.
This overrides other checks that properly call SignalEnd() later.
Differential Revision: https://reviews.llvm.org/D127786
if (!EditCharacterOutput(io, *edit, x, length)) {
return false;
}
- } else {
+ } else { // input
if (edit->descriptor != DataEdit::ListDirectedNullValue) {
if (EditCharacterInput(io, *edit, x, length)) {
anyInput = true;
return false;
}
const ConnectionState &connection{io.GetConnectionState()};
- if (connection.IsAtEOF()) {
- return false;
- }
std::size_t remaining{length};
if (edit.width && *edit.width > 0) {
remaining = *edit.width;