[flang][runtime] Fix input of NAN(...) on non-fast path

The closing parenthesis needs to be consumed when a NaN
with parenthesized (ignored) information is read on the
real input path that preprocesses input characters before
passing them to the decimal-to-binary converter.

Differential Revision: https://reviews.llvm.org/D125048
This commit is contained in:
Peter Klausler 2022-04-26 16:49:29 -07:00
parent 09fc685ce6
commit 2f31b4b10a
1 changed files with 5 additions and 3 deletions
flang/runtime

View File

@ -217,17 +217,19 @@ static int ScanRealInput(char *buffer, int bufferSize, IoStatementState &io,
if (next && *next == '(') { // NaN(...)
Put('(');
int depth{1};
do {
while (true) {
next = io.NextInField(remaining, edit);
if (!next) {
if (depth == 0) {
break;
} else if (!next) {
return 0; // error
} else if (*next == '(') {
++depth;
} else if (*next == ')') {
--depth;
}
Put(*next);
} while (depth > 0);
}
}
exponent = 0;
} else if (first == decimal || (first >= '0' && first <= '9') ||