[flang-commits] [flang] [NFC][flang][runtime] Avoid recursion in EditCharacterOutput and EditLogicalOutput. (PR #92806)
Slava Zakharin via flang-commits
flang-commits at lists.llvm.org
Mon May 20 11:50:31 PDT 2024
https://github.com/vzakhari created https://github.com/llvm/llvm-project/pull/92806
…LogicalOutput.
>From e19bf95e28ea66374cb63e982e360061f0df08cb Mon Sep 17 00:00:00 2001
From: Slava Zakharin <szakharin at nvidia.com>
Date: Mon, 20 May 2024 11:47:42 -0700
Subject: [PATCH] [NFC][flang][runtime] Avoid recursion in EditCharacterOutput
and EditLogicalOutput.
---
flang/runtime/edit-output.cpp | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/flang/runtime/edit-output.cpp b/flang/runtime/edit-output.cpp
index 13ab91fc56ead..6b24c56483185 100644
--- a/flang/runtime/edit-output.cpp
+++ b/flang/runtime/edit-output.cpp
@@ -832,8 +832,11 @@ RT_API_ATTRS bool EditLogicalOutput(
reinterpret_cast<const unsigned char *>(&truth), sizeof truth);
case 'A': { // legacy extension
int truthBits{truth};
- return EditCharacterOutput(
- io, edit, reinterpret_cast<char *>(&truthBits), sizeof truthBits);
+ int len{sizeof truthBits};
+ int width{edit.width.value_or(len)};
+ return EmitRepeated(io, ' ', std::max(0, width - len)) &&
+ EmitEncoded(
+ io, reinterpret_cast<char *>(&truthBits), std::min(width, len));
}
default:
io.GetIoErrorHandler().SignalError(IostatErrorInFormat,
More information about the flang-commits
mailing list