[flang-commits] [flang] 2f31b4b - [flang][runtime] Fix input of NAN(...) on non-fast path
Peter Klausler via flang-commits
flang-commits at lists.llvm.org
Mon May 9 12:38:46 PDT 2022
Author: Peter Klausler
Date: 2022-05-09T12:38:31-07:00
New Revision: 2f31b4b10a1ab3ec937fbbead55b66b8dfbb0934
URL: https://github.com/llvm/llvm-project/commit/2f31b4b10a1ab3ec937fbbead55b66b8dfbb0934
DIFF: https://github.com/llvm/llvm-project/commit/2f31b4b10a1ab3ec937fbbead55b66b8dfbb0934.diff
LOG: [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
Added:
Modified:
flang/runtime/edit-input.cpp
Removed:
################################################################################
diff --git a/flang/runtime/edit-input.cpp b/flang/runtime/edit-input.cpp
index 304394577861b..b694749ccc226 100644
--- a/flang/runtime/edit-input.cpp
+++ b/flang/runtime/edit-input.cpp
@@ -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') ||
More information about the flang-commits
mailing list