mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-11 20:27:19 +00:00
[flang] Set "undefined" NEXTREC=n variable to 0 rather than random garbage
12.10.2.17 defines that a INQUIRE statement's NEXTREC=n output value for a unit that is not connected for direct access becomes undefined, but the current I/O runtime can fail in a confusing manner by trying to return uninitialized stack garbage. Reported on Slack by Tarun Prabhu as an intermittent failure in the gfortran regression test inquire_pre.f90. Differential Revision: https://reviews.llvm.org/D152295
This commit is contained in:
parent
9a81b69757
commit
e468f07550
@ -1451,15 +1451,14 @@ bool IONAME(InquirePendingId)(Cookie cookie, std::int64_t id, bool &result) {
|
||||
bool IONAME(InquireInteger64)(
|
||||
Cookie cookie, InquiryKeywordHash inquiry, std::int64_t &result, int kind) {
|
||||
IoStatementState &io{*cookie};
|
||||
std::int64_t n;
|
||||
std::int64_t n{0}; // safe "undefined" value
|
||||
if (io.Inquire(inquiry, n)) {
|
||||
if (SetInteger(result, kind, n)) {
|
||||
return true;
|
||||
}
|
||||
io.GetIoErrorHandler().SignalError(
|
||||
"InquireInteger64(): bad INTEGER kind(%d) or out-of-range "
|
||||
"value(%jd) "
|
||||
"for result",
|
||||
"value(%jd) for result",
|
||||
kind, static_cast<std::intmax_t>(n));
|
||||
}
|
||||
return false;
|
||||
|
Loading…
x
Reference in New Issue
Block a user