diff options
author | Peter Klausler <pklausler@nvidia.com> | 2025-08-05 13:40:11 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-08-05 13:40:11 -0700 |
commit | fc9a08078017c8a1ad812d01ed9a7d2066b31e07 (patch) | |
tree | d965ba0de4b341886c9798ab68d297baf7b11d9a | |
parent | 56051daaf0584ed797940fda74a4cfdc2b3586c0 (diff) | |
download | llvm-fc9a08078017c8a1ad812d01ed9a7d2066b31e07.zip llvm-fc9a08078017c8a1ad812d01ed9a7d2066b31e07.tar.gz llvm-fc9a08078017c8a1ad812d01ed9a7d2066b31e07.tar.bz2 |
[flang][runtime] Handle empty NAMELIST value list (#151770)
InputNamelist() returns early if any value list read in by
InputDerivedType() or DescriptorIo<Input>() is empty, since they return
false. But an empty value list is okay, and the early return should
occur only on error.
Fixes https://github.com/llvm/llvm-project/issues/151756.
-rw-r--r-- | flang-rt/lib/runtime/namelist.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/flang-rt/lib/runtime/namelist.cpp b/flang-rt/lib/runtime/namelist.cpp index 4a21746..cbc3226 100644 --- a/flang-rt/lib/runtime/namelist.cpp +++ b/flang-rt/lib/runtime/namelist.cpp @@ -578,12 +578,14 @@ bool IODEF(InputNamelist)(Cookie cookie, const NamelistGroup &group) { addendum && addendum->derivedType()) { const NonTbpDefinedIoTable *table{group.nonTbpDefinedIo}; listInput->ResetForNextNamelistItem(/*inNamelistSequence=*/true); - if (!IONAME(InputDerivedType)(cookie, *useDescriptor, table)) { + if (!IONAME(InputDerivedType)(cookie, *useDescriptor, table) && + handler.InError()) { return false; } } else { listInput->ResetForNextNamelistItem(useDescriptor->rank() > 0); - if (!descr::DescriptorIO<Direction::Input>(io, *useDescriptor)) { + if (!descr::DescriptorIO<Direction::Input>(io, *useDescriptor) && + handler.InError()) { return false; } } |