[flang-commits] [PATCH] D127024: [flang][runtime] Don't crash after surviving internal output overflow

Peter Klausler via Phabricator via flang-commits flang-commits at lists.llvm.org
Fri Jun 3 16:02:16 PDT 2022


klausler created this revision.
klausler added a reviewer: vdonaldson.
klausler added a project: Flang.
Herald added a subscriber: jdoerfert.
Herald added a project: All.
klausler requested review of this revision.

After the program has survived its attempt to overflow the output buffer
with an internal WRITE using ERR=, IOSTAT=, &/or IOMSG=, don't crash
by accidentally blank-filling the next record that usually doesn't exist.


https://reviews.llvm.org/D127024

Files:
  flang/runtime/internal-unit.cpp


Index: flang/runtime/internal-unit.cpp
===================================================================
--- flang/runtime/internal-unit.cpp
+++ flang/runtime/internal-unit.cpp
@@ -41,7 +41,9 @@
   if constexpr (DIR == Direction::Output) {
     // Clear the remainder of the current record if anything was written
     // to it, or if it is the only record.
-    if (endfileRecordNumber.value_or(-1) == 2 || furthestPositionInRecord > 0) {
+    auto end{endfileRecordNumber.value_or(0)};
+    if (currentRecordNumber < end &&
+        (end == 2 || furthestPositionInRecord > 0)) {
       BlankFillOutputRecord();
     }
   }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D127024.434182.patch
Type: text/x-patch
Size: 627 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/flang-commits/attachments/20220603/bf522fc8/attachment.bin>


More information about the flang-commits mailing list