aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Klausler <pklausler@nvidia.com>2025-08-05 13:40:11 -0700
committerGitHub <noreply@github.com>2025-08-05 13:40:11 -0700
commitfc9a08078017c8a1ad812d01ed9a7d2066b31e07 (patch)
treed965ba0de4b341886c9798ab68d297baf7b11d9a
parent56051daaf0584ed797940fda74a4cfdc2b3586c0 (diff)
downloadllvm-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.cpp6
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;
}
}