forked from OSchip/llvm-project
[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:
parent
09fc685ce6
commit
2f31b4b10a
flang/runtime
|
@ -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') ||
|
||||
|
|
Loading…
Reference in New Issue