Fix crash with char[] default values

Closes #249

Reported-by: @pfeatherstone
Signed-off-by: Sean Robinson <sean.robinson@scottsdalecc.edu>
This commit is contained in:
Sean Robinson 2023-01-05 07:53:09 -07:00
parent af0f7cb25f
commit cb3da173f6
3 changed files with 26 additions and 0 deletions

View File

@ -408,6 +408,10 @@ public:
return *this; return *this;
} }
Argument &default_value(const char *value) {
return default_value(std::string(value));
}
Argument &required() { Argument &required() {
m_is_required = true; m_is_required = true;
return *this; return *this;

View File

@ -33,6 +33,7 @@ file(GLOB ARGPARSE_TEST_SOURCES
test_container_arguments.cpp test_container_arguments.cpp
test_const_correct.cpp test_const_correct.cpp
test_default_args.cpp test_default_args.cpp
test_default_value.cpp
test_get.cpp test_get.cpp
test_help.cpp test_help.cpp
test_invalid_arguments.cpp test_invalid_arguments.cpp

View File

@ -0,0 +1,21 @@
#include <argparse/argparse.hpp>
#include <doctest.hpp>
#include <string>
using doctest::test_suite;
TEST_CASE("Use a 'string' default value" * test_suite("default_value")) {
argparse::ArgumentParser program("test");
SUBCASE("Use a const char[] default value") {
program.add_argument("--arg").default_value("array of char");
REQUIRE_NOTHROW(program.parse_args({"test"}));
REQUIRE(program.get("--arg") == std::string("array of char"));
}
SUBCASE("Use a std::string default value") {
program.add_argument("--arg").default_value(std::string("string object"));
REQUIRE_NOTHROW(program.parse_args({"test"}));
REQUIRE(program.get("--arg") == std::string("string object"));
}
}