Skip to content

Conversation

@lifflander
Copy link
Collaborator

Fixes #2472

@lifflander lifflander requested a review from nlslatt September 10, 2025 19:05
@lifflander lifflander linked an issue Sep 10, 2025 that may be closed by this pull request
@github-actions
Copy link

github-actions bot commented Sep 10, 2025

clang-format output for this changeset:

diff --git a/src/vt/collective/collective_ops.h b/src/vt/collective/collective_ops.h
index a2fadb8f2..a70f8dfe7 100644
--- a/src/vt/collective/collective_ops.h
+++ b/src/vt/collective/collective_ops.h
@@ -100,8 +100,7 @@ struct CollectiveAnyOps {
    * \return the runtime pointer
    */
   static RuntimePtrType initializePreconfigured(
-    std::unique_ptr<StartupConfig> startup_config,
-    MPI_Comm* comm = nullptr,
+    std::unique_ptr<StartupConfig> startup_config, MPI_Comm* comm = nullptr,
     arguments::AppConfig const* app_config = nullptr,
     bool print_startup_banner = true
   );
diff --git a/src/vt/collective/startup.cc b/src/vt/collective/startup.cc
index 33f382f04..031d71e33 100644
--- a/src/vt/collective/startup.cc
+++ b/src/vt/collective/startup.cc
@@ -50,9 +50,7 @@
 
 namespace vt {
 
-std::unique_ptr<StartupConfig> preconfigure(
-  int& argc, char**& argv
-) {
+std::unique_ptr<StartupConfig> preconfigure(int& argc, char**& argv) {
   auto arg_config = std::make_unique<arguments::ArgConfig>();
   auto parse_input_holder = arg_config->setupInputHolder(argc, argv);
   return std::make_unique<StartupConfig>(
@@ -61,10 +59,8 @@ std::unique_ptr<StartupConfig> preconfigure(
 }
 
 RuntimePtrType initializePreconfigured(
-  std::unique_ptr<StartupConfig> startup_config,
-  MPI_Comm* comm,
-  arguments::AppConfig const* app_config,
-  bool print_startup_banner
+  std::unique_ptr<StartupConfig> startup_config, MPI_Comm* comm,
+  arguments::AppConfig const* app_config, bool print_startup_banner
 ) {
   return CollectiveOps::initializePreconfigured(
     std::move(startup_config), comm, app_config, print_startup_banner
@@ -73,8 +69,8 @@ RuntimePtrType initializePreconfigured(
 
 // vt::{initialize,finalize} for main ::vt namespace
 RuntimePtrType initialize(
-  int& argc, char**& argv, MPI_Comm* comm, arguments::AppConfig const* appConfig,
-  bool print_startup_banner
+  int& argc, char**& argv, MPI_Comm* comm,
+  arguments::AppConfig const* appConfig, bool print_startup_banner
 ) {
   bool const is_interop = comm != nullptr;
   return CollectiveOps::initialize(
diff --git a/src/vt/collective/startup.h b/src/vt/collective/startup.h
index 3dab0090c..73dc6dc54 100644
--- a/src/vt/collective/startup.h
+++ b/src/vt/collective/startup.h
@@ -67,9 +67,7 @@ namespace vt {
  *
  * \return the \c StartupConfig to pass to VT
  */
-std::unique_ptr<StartupConfig> preconfigure(
-  int& argc, char**& argv
-);
+std::unique_ptr<StartupConfig> preconfigure(int& argc, char**& argv);
 
 /**
  * \brief Initialize VT after it has been preconfigured
@@ -82,8 +80,7 @@ std::unique_ptr<StartupConfig> preconfigure(
  * \return the runtime pointer
  */
 RuntimePtrType initializePreconfigured(
-  std::unique_ptr<StartupConfig> startup_config,
-  MPI_Comm* comm = nullptr,
+  std::unique_ptr<StartupConfig> startup_config, MPI_Comm* comm = nullptr,
   arguments::AppConfig const* app_config = nullptr,
   bool print_startup_banner = true
 );
diff --git a/src/vt/collective/startup_config.cc b/src/vt/collective/startup_config.cc
index 3c7ef9cbb..cf9b895b3 100644
--- a/src/vt/collective/startup_config.cc
+++ b/src/vt/collective/startup_config.cc
@@ -49,9 +49,9 @@ namespace vt {
 StartupConfig::StartupConfig(
   std::unique_ptr<arguments::ArgConfig> in_arg_config,
   std::unique_ptr<ParseInputHolder> in_parse_input_holder
-) : arg_config_(std::move(in_arg_config)),
-    parse_input_holder_(std::move(in_parse_input_holder))
-{ }
+)
+  : arg_config_(std::move(in_arg_config)),
+    parse_input_holder_(std::move(in_parse_input_holder)) { }
 
 StartupConfig::~StartupConfig() = default;
 
diff --git a/src/vt/collective/startup_config.h b/src/vt/collective/startup_config.h
index 90f630f1c..e1c8fa803 100644
--- a/src/vt/collective/startup_config.h
+++ b/src/vt/collective/startup_config.h
@@ -64,17 +64,13 @@ namespace vt {
 struct StartupConfig;
 
 // fwd-decl preconfigure function for friend decl
-std::unique_ptr<StartupConfig> preconfigure(
-  int& argc, char**& argv
-);
+std::unique_ptr<StartupConfig> preconfigure(int& argc, char**& argv);
 
 /**
  * \brief StartupConfig for preconfiguring VT before starting up the runtime.
  */
 struct StartupConfig {
-  friend std::unique_ptr<StartupConfig> preconfigure(
-    int& argc, char**& argv
-  );
+  friend std::unique_ptr<StartupConfig> preconfigure(int& argc, char**& argv);
 
   friend struct vt::runtime::Runtime;
 
diff --git a/src/vt/configs/arguments/args.cc b/src/vt/configs/arguments/args.cc
index ef640e27f..561723f36 100644
--- a/src/vt/configs/arguments/args.cc
+++ b/src/vt/configs/arguments/args.cc
@@ -1362,9 +1362,8 @@ public:
   }
 };
 
-std::unique_ptr<ParseInputHolder> ArgConfig::setupInputHolder(
-  int& argc, char**& argv
-) {
+std::unique_ptr<ParseInputHolder>
+ArgConfig::setupInputHolder(int& argc, char**& argv) {
   auto pih = std::make_unique<ParseInputHolder>();
 
   if (argc == 0) {
@@ -1396,7 +1395,8 @@ std::unique_ptr<ParseInputHolder> ArgConfig::setupInputHolder(
 
   // Build string-vector and reverse order to parse (CLI quirk)
   for (auto it = vt_args.crbegin(); it != vt_args.crend(); ++it) {
-    if (util::demangle::DemanglerUtils::splitString(*it,'=')[0] == "--vt_input_config_yaml") {
+    if (util::demangle::DemanglerUtils::splitString(*it, '=')[0] ==
+        "--vt_input_config_yaml") {
       pih->vt_yaml_input_arg.push_back(*it);
     } else {
       pih->vt_args_to_parse.push_back(*it);
@@ -1439,15 +1439,13 @@ std::unique_ptr<ParseInputHolder> ArgConfig::setupInputHolder(
   return pih;
 }
 
-std::tuple<int, std::string> ArgConfig::parse(
-  int& argc, char**& argv, AppConfig const* appConfig
-) {
+std::tuple<int, std::string>
+ArgConfig::parse(int& argc, char**& argv, AppConfig const* appConfig) {
   return parse(setupInputHolder(argc, argv), appConfig);
 }
 
 std::tuple<int, std::string> ArgConfig::parse(
-  std::unique_ptr<ParseInputHolder> pih,
-  AppConfig const* appConfig
+  std::unique_ptr<ParseInputHolder> pih, AppConfig const* appConfig
 ) {
   // If user didn't define appConfig, parse into this->config_.
   if (not appConfig) {
@@ -1514,9 +1512,8 @@ std::tuple<int, std::string> ArgConfig::parseToConfig(
   addTVArgs(app, appConfig);
   addThreadingArgs(app, appConfig);
 
-  std::tuple<int, std::string> result = parseArguments(
-    app, std::move(pih), appConfig
-  );
+  std::tuple<int, std::string> result =
+    parseArguments(app, std::move(pih), appConfig);
   if (std::get<0>(result) not_eq -1) {
     // non-success
     return result;
diff --git a/src/vt/configs/arguments/args.h b/src/vt/configs/arguments/args.h
index 002fbbcd2..27576fcd8 100644
--- a/src/vt/configs/arguments/args.h
+++ b/src/vt/configs/arguments/args.h
@@ -119,9 +119,8 @@ struct ArgConfig : runtime::component::Component<ArgConfig> {
   AppConfig config_;
 
 private:
-  std::tuple<int, std::string> parseToConfig(
-    std::unique_ptr<ParseInputHolder> pih, AppConfig& appConfig
-  );
+  std::tuple<int, std::string>
+  parseToConfig(std::unique_ptr<ParseInputHolder> pih, AppConfig& appConfig);
 
   bool parsed_ = false;
 };
diff --git a/src/vt/runtime/runtime.cc b/src/vt/runtime/runtime.cc
index ab81af032..442d0b6ab 100644
--- a/src/vt/runtime/runtime.cc
+++ b/src/vt/runtime/runtime.cc
@@ -97,19 +97,18 @@ namespace vt { namespace runtime {
 /*static*/ bool volatile Runtime::sig_user_1_ = false;
 
 Runtime::Runtime(
-  std::unique_ptr<StartupConfig> startup_config,
-  MPI_Comm in_comm,
-  arguments::AppConfig const* appConfig,
-  RuntimeInstType const in_instance
-) : instance_(in_instance), runtime_active_(false), is_interop_(true),
+  std::unique_ptr<StartupConfig> startup_config, MPI_Comm in_comm,
+  arguments::AppConfig const* appConfig, RuntimeInstType const in_instance
+)
+  : instance_(in_instance),
+    runtime_active_(false),
+    is_interop_(true),
     initial_communicator_(in_comm),
     arg_config_(std::move(startup_config->arg_config_)),
-    app_config_(&arg_config_->config_)
-{
+    app_config_(&arg_config_->config_) {
   startupMPIConfigArgs(
-    std::move(startup_config->parse_input_holder_),
-    initial_communicator_, arg_config_.get(),
-    appConfig
+    std::move(startup_config->parse_input_holder_), initial_communicator_,
+    arg_config_.get(), appConfig
   );
   setUpSignals();
   determinePhysicalNodeIDs();
@@ -152,8 +151,7 @@ Runtime::Runtime(
   /// =========================================================================
 
   startupMPIConfigArgs(
-    argc, argv, is_interop_, initial_communicator_, arg_config_.get(),
-    appConfig
+    argc, argv, is_interop_, initial_communicator_, arg_config_.get(), appConfig
   );
   setUpSignals();
   determinePhysicalNodeIDs();
@@ -187,17 +185,13 @@ void Runtime::setUpSignals() {
   }
 
   startupMPIConfigArgs(
-    arg_config->setupInputHolder(argc, argv),
-    in_comm,
-    arg_config,
-    appConfig
+    arg_config->setupInputHolder(argc, argv), in_comm, arg_config, appConfig
   );
 }
 
 /*static*/ void Runtime::startupMPIConfigArgs(
-  std::unique_ptr<arguments::ParseInputHolder> pih,
-  MPI_Comm in_comm, arguments::ArgConfig* arg_config,
-  arguments::AppConfig const* appConfig
+  std::unique_ptr<arguments::ParseInputHolder> pih, MPI_Comm in_comm,
+  arguments::ArgConfig* arg_config, arguments::AppConfig const* appConfig
 ) {
   // n.b. ref-update of args with pass-through arguments
   std::tuple<int, std::string> result =
@@ -259,7 +253,9 @@ void Runtime::determinePhysicalNodeIDs() {
     MPI_Comm i_comm = initial_communicator_;
 
     MPI_Comm shm_comm;
-    MPI_Comm_split_type(i_comm, MPI_COMM_TYPE_SHARED, 0, MPI_INFO_NULL, &shm_comm);
+    MPI_Comm_split_type(
+      i_comm, MPI_COMM_TYPE_SHARED, 0, MPI_INFO_NULL, &shm_comm
+    );
     int shm_rank = -1;
     int node_size = -1;
     MPI_Comm_rank(shm_comm, &shm_rank);
diff --git a/src/vt/runtime/runtime.h b/src/vt/runtime/runtime.h
index b4dc772f8..d18434d62 100644
--- a/src/vt/runtime/runtime.h
+++ b/src/vt/runtime/runtime.h
@@ -163,9 +163,8 @@ struct Runtime {
    * \param[in] appConfig possible app config overrides
    */
   static void startupMPIConfigArgs(
-    std::unique_ptr<arguments::ParseInputHolder> pih,
-    MPI_Comm in_comm, arguments::ArgConfig* arg_config,
-    arguments::AppConfig const* appConfig
+    std::unique_ptr<arguments::ParseInputHolder> pih, MPI_Comm in_comm,
+    arguments::ArgConfig* arg_config, arguments::AppConfig const* appConfig
   );
 
   /**
@@ -239,7 +238,8 @@ struct Runtime {
    *
    * \return whether it initialized or not
    */
-  bool initialize(bool const force_now = false, bool print_startup_banner = true);
+  bool
+  initialize(bool const force_now = false, bool print_startup_banner = true);
 
   /**
    * \internal \brief Finalize the runtime

@github-actions
Copy link

github-actions bot commented Sep 10, 2025

Pipelines results

vt-build-amd64-ubuntu-20-04-gcc-10-openmpi-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-20-04-clang-9-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-20-04-gcc-10-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-20-04-gcc-9-ldms-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-20-04-gcc-9-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-22-04-clang-13-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-24-04-clang-16-zoltan-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-22-04-clang-12-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-22-04-clang-11-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-22-04-clang-15-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-22-04-gcc-12-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-22-04-clang-14-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-20-04-icpx-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-24-04-gcc-14-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-22-04-gcc-11-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-24-04-gcc-13-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-20-04-gcc-9-cuda-11-4-3-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

/vt/src/vt/pipe/pipe_manager.impl.h(135): warning: missing return statement at end of non-void function "vt::pipe::PipeManager::makeSend<f,Target>(Target) [with f=&vt::vrt::collection::lb::GreedyLB::collectHandler, Target=vt::objgroup::proxy::ProxyElm<vt::vrt::collection::lb::GreedyLB>]"
          detected during:
            instantiation of "auto vt::pipe::PipeManager::makeSend<f,Target>(Target) [with f=&vt::vrt::collection::lb::GreedyLB::collectHandler, Target=vt::objgroup::proxy::ProxyElm<vt::vrt::collection::lb::GreedyLB>]" 
/vt/src/vt/objgroup/proxy/proxy_objgroup.impl.h(221): here
            instantiation of "vt::objgroup::proxy::Proxy<ObjT>::PendingSendType vt::objgroup::proxy::Proxy<ObjT>::reduce<f,Op,Target,Args...>(Target, Args &&...) const [with ObjT=vt::vrt::collection::lb::GreedyLB, f=&vt::vrt::collection::lb::GreedyLB::collectHandler, Op=vt::collective::PlusOp, Target=vt::objgroup::proxy::ProxyElm<vt::vrt::collection::lb::GreedyLB>, Args=<vt::vrt::collection::lb::GreedyPayload>]" 
/vt/src/vt/vrt/collection/balance/greedylb/greedylb.cc(222): here

/vt/src/vt/runtime/runtime.cc(1117): warning: parameter "comm" was declared but never referenced

/vt/src/vt/runtime/component/component_pack.impl.h(55): warning: parameter "seq" was declared but never referenced
          detected during:
            instantiation of "std::unique_ptr<T, std::default_delete<T>> vt::runtime::component::<unnamed>::tupleCons<T,Tuple>(Tuple &&) [with T=vt::arguments::ArgConfig, Tuple=std::tuple<std::unique_ptr<vt::arguments::ArgConfig, std::default_delete<vt::arguments::ArgConfig>>>]" 
(104): here
            instantiation of "vt::runtime::component::registry::AutoHandlerType vt::runtime::component::ComponentPack::registerComponent(T **, vt::runtime::component::BaseComponent::StartupDepsPack<StartupDeps...>, vt::runtime::component::BaseComponent::RuntimeDepsPack<RuntimeDeps...>, Cons &&...) [with T=vt::arguments::ArgConfig, StartupDeps=<>, RuntimeDeps=<>, Cons=<std::unique_ptr<v

 ==> And there is more. Read log. <==

View job log


vt-build-amd64-ubuntu-24-04-clang-18-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-24-04-clang-17-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-20-04-clang-10-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-24-04-clang-16-vtk-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-22-04-gcc-12-vtk-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-20-04-gcc-9-cuda-12-2-0-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

/vt/lib/fmt/include/fmt-vt/base.h(472): warning #128-D: loop is not reachable
    for (; n != 0; ++s1, ++s2, --n) {
    ^
          detected during:
            instantiation of "auto fmt::v11::detail::compare(const Char *, const Char *, std::size_t)->int [with Char=char]" at line 591
            instantiation of "auto fmt::v11::basic_string_view<Char>::compare(fmt::v11::basic_string_view<Char>) const->int [with Char=char]" at line 598
            instantiation of class "fmt::v11::basic_string_view<Char> [with Char=char]" at line 2621
            instantiation of "auto fmt::v11::basic_format_args<Context>::get_id(fmt::v11::basic_string_view<Char>) const->int [with Context=fmt::v11::context, Char=char]" at line 2664

Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"

/vt/lib/fmt/include/fmt-vt/format.h(2596): warning #2417-D: constexpr constructor calls non-constexpr function "fmt::v11::basic_memory_buffer<T, SIZE, Allocator>::basic_memory_buffer(const Allocator &) [with T=fmt::v11::detail::bigint::bigit, SIZE=32UL, Allocator=fmt::v11::detail::allocator<fmt::v11::detail::bigint::bigit>]"
    constexpr bigint() : exp_(0) {}
                                 ^

/vt/lib/fmt/include/fmt-vt/base.h(472): warning #128-D: loop is not reachable
    for (; n != 0; ++s1, ++s2, --n) {
    ^
          detected during:
            instantiation of "auto fmt::v11::detail::compare(const Char *, const Char *, std::size_t)->int [with Char=char]" at line 591
            instantiation of "auto fmt::v11::basic_string_view<Char>::compare(fmt::v11::basic_string_view<Char>) const->int [with Char=char]" at line 598
            instantiation of class "fmt::v11::basic_string_view<Char> [with Char=char]" at line 2621
            instantiation of "auto fmt::v11::basic_format_args<Context>::get_id(fmt::v11::basic_string_view<Char>) const->int [with Context=fmt::v11::context, Char=char]" at line 2664

Remark: The warnings can be suppressed with "-diag-suppress <warning-n

 ==> And there is more. Read log. <==

View job log


vt-build-amd64-ubuntu-20-04-gcc-10-openmpi-cpp-spack

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-20-04-gcc-9-cpp-docs

Build for 870c2d9 (2025-09-30 21:22:16 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-alpine-3-16-clang-cpp

Build for 85dfe92 (2025-09-30 21:50:22 UTC)

Compilation – successful

Testing – passed

View job log


@codecov
Copy link

codecov bot commented Sep 15, 2025

Codecov Report

❌ Patch coverage is 96.32353% with 5 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.35%. Comparing base (64053f2) to head (ace7857).
⚠️ Report is 11 commits behind head on develop.

Files with missing lines Patch % Lines
src/vt/runtime/runtime.cc 94.82% 3 Missing ⚠️
src/vt/configs/arguments/args.cc 95.74% 2 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop    #2473      +/-   ##
===========================================
+ Coverage    88.28%   88.35%   +0.06%     
===========================================
  Files          727      727              
  Lines        31227    31256      +29     
===========================================
+ Hits         27569    27615      +46     
+ Misses        3658     3641      -17     
Files with missing lines Coverage Δ
src/vt/collective/collective_ops.cc 93.01% <100.00%> (+0.31%) ⬆️
src/vt/collective/collective_ops.h 0.00% <ø> (ø)
src/vt/collective/startup.cc 64.28% <100.00%> (+27.61%) ⬆️
src/vt/collective/startup_config.cc 100.00% <100.00%> (ø)
src/vt/configs/arguments/args.h 100.00% <ø> (ø)
src/vt/runtime/runtime.h 100.00% <ø> (ø)
tests/unit/runtime/test_initialization.cc 99.60% <100.00%> (+0.01%) ⬆️
src/vt/configs/arguments/args.cc 95.41% <95.74%> (-0.19%) ⬇️
src/vt/runtime/runtime.cc 78.21% <94.82%> (+0.92%) ⬆️

... and 4 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@lifflander lifflander force-pushed the 2472-argvcontainer-leaks-c-string-from-strdup branch from 6bcc013 to ed330e0 Compare September 30, 2025 19:03
Copy link
Collaborator

@nlslatt nlslatt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good

@lifflander lifflander merged commit 87107a1 into develop Oct 1, 2025
35 of 38 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ArgvContainer leaks c-string from strdup

3 participants