From 0157675e4078b062d0a08bbf4ff87c0bd10b2aff Mon Sep 17 00:00:00 2001 From: "Peter D. Barnes, Jr" Date: Tue, 25 Oct 2022 00:12:29 -0700 Subject: [PATCH] core: command-line: char* buffers fixups --- src/core/examples/command-line-example.cc | 7 +++---- src/core/model/command-line.cc | 2 +- src/core/test/command-line-test-suite.cc | 8 +++----- src/core/test/core-example-command-line.reflog | 2 +- src/core/test/examples-as-tests-test-suite.cc | 2 +- 5 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/core/examples/command-line-example.cc b/src/core/examples/command-line-example.cc index ce330e5d1..61e0f7c6a 100644 --- a/src/core/examples/command-line-example.cc +++ b/src/core/examples/command-line-example.cc @@ -84,9 +84,8 @@ main(int argc, char* argv[]) const std::string attrPath = attrClass + "::" + attrName; // char* buffer option - const int bufsize = 10; - char* charbuf = new char[bufsize]; - std::strncpy(charbuf, "charstar", bufsize); + constexpr int CHARBUF_SIZE = 10; + char charbuf[CHARBUF_SIZE] = "charstar"; // Non-option arguments int nonOpt1 = 1; @@ -119,7 +118,7 @@ main(int argc, char* argv[]) cmd.AddValue("strArg", "a string argument", strArg); cmd.AddValue("anti", attrPath); cmd.AddValue("cbArg", "a string via callback", MakeCallback(SetCbArg)); - cmd.AddValue("charbuf", "a char* buffer", charbuf, bufsize); + cmd.AddValue("charbuf", "a char* buffer", charbuf, CHARBUF_SIZE); cmd.AddNonOption("nonOpt1", "first non-option", nonOpt1); cmd.AddNonOption("nonOpt2", "second non-option", nonOpt2); cmd.Parse(argc, argv); diff --git a/src/core/model/command-line.cc b/src/core/model/command-line.cc index f4746ea90..b8e37f1b4 100644 --- a/src/core/model/command-line.cc +++ b/src/core/model/command-line.cc @@ -747,7 +747,7 @@ CommandLine::AddValue(const std::string& name, std::size_t num) { NS_LOG_FUNCTION(this << name << help << value << num); - std::shared_ptr item{new CharStarItem()}; + auto item = std::make_shared(); item->m_name = name; item->m_help = help; item->m_buffer = value; diff --git a/src/core/test/command-line-test-suite.cc b/src/core/test/command-line-test-suite.cc index 9439fbd35..a053a3be2 100644 --- a/src/core/test/command-line-test-suite.cc +++ b/src/core/test/command-line-test-suite.cc @@ -540,18 +540,16 @@ void CommandLineCharStarTestCase::DoRun() { // char* buffer option - const int bufsize = 10; - char* charbuf = new char[bufsize]; - std::strncpy(charbuf, "charstar", bufsize); + constexpr int CHARBUF_SIZE = 10; + char charbuf[CHARBUF_SIZE] = "charstar"; CommandLine cmd; - cmd.AddValue("charbuf", "a char* buffer", charbuf, bufsize); + cmd.AddValue("charbuf", "a char* buffer", charbuf, CHARBUF_SIZE); Parse(cmd, 1, "--charbuf=deadbeef"); std::string value{charbuf}; NS_TEST_ASSERT_MSG_EQ(value, "deadbeef", "CommandLine did not correctly set a char* buffer"); - delete[] charbuf; } /** diff --git a/src/core/test/core-example-command-line.reflog b/src/core/test/core-example-command-line.reflog index c7fb3e2ba..f737f6a84 100644 --- a/src/core/test/core-example-command-line.reflog +++ b/src/core/test/core-example-command-line.reflog @@ -7,7 +7,7 @@ boolArg: false true strArg: "strArg default" "deadbeef" anti: "false" "true" cbArg: cbArg default beefstew -charbuf: "charstar" "charstar" +charbuf: "charstar" "stewmeat" nonOpt1: 1 3 nonOpt2: 1 4 diff --git a/src/core/test/examples-as-tests-test-suite.cc b/src/core/test/examples-as-tests-test-suite.cc index 8f7c1ee6d..8a7c67815 100644 --- a/src/core/test/examples-as-tests-test-suite.cc +++ b/src/core/test/examples-as-tests-test-suite.cc @@ -75,7 +75,7 @@ CommandLineExampleTestCase::CommandLineExampleTestCase() "command-line-example", NS_TEST_SOURCEDIR, "--intArg=2 --boolArg --strArg=deadbeef --anti=t " - "--cbArg=beefstew 3 4 extraOne extraTwo") + "--cbArg=beefstew --charbuf=stewmeat 3 4 extraOne extraTwo") { }