diff --git a/src/argparse.cpp b/src/argparse.cpp index 0f5ddd6d..5049a99c 100644 --- a/src/argparse.cpp +++ b/src/argparse.cpp @@ -696,10 +696,8 @@ sink::preprocess(std::string value) const bool_sink::bool_sink(bool* ptr) : sink(0) - , m_sink(ptr) + , m_sink(ptr ? ptr : &m_fallback_sink) { - AR_REQUIRE(ptr); - *m_sink = false; } diff --git a/src/argparse.hpp b/src/argparse.hpp index 237060b0..402dcaa6 100644 --- a/src/argparse.hpp +++ b/src/argparse.hpp @@ -362,6 +362,8 @@ class bool_sink : public sink private: bool* m_sink; + //! Sink variable used if no sink was supplied + bool m_fallback_sink = false; }; class uint_sink : public sink diff --git a/tests/unit/argparse_test.cpp b/tests/unit/argparse_test.cpp index c17c0740..800fba64 100644 --- a/tests/unit/argparse_test.cpp +++ b/tests/unit/argparse_test.cpp @@ -41,11 +41,6 @@ using Catch::Matchers::Contains; /////////////////////////////////////////////////////////////////////////////// // boolean sink -TEST_CASE("bool sink is required", "[argparse::bool_sink]") -{ - REQUIRE_THROWS_AS(argparse::bool_sink(nullptr), assert_failed); -} - TEST_CASE("bool sink is initialized", "[argparse::bool_sink]") { bool value = true;