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
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') ||