aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTaylor C. Richberger <taywee@gmx.com>2017-11-12 04:44:48 -0700
committerGitHub <noreply@github.com>2017-11-12 04:44:48 -0700
commit3331ae47078aef7f7c57e72ee5e06128301d61d2 (patch)
treeb27e9877ca80026354ade982618f59af83ebb3f7
parentMerge pull request #40 from pavel-belikov/subparsers-validation (diff)
parentfix uninitialized RaiiSubparser::oldSubparser (diff)
downloadargs.hxx-3331ae47078aef7f7c57e72ee5e06128301d61d2.tar.xz
Merge pull request #41 from pavel-belikov/fix-uninitialized-values
Fix uninitialized values
-rw-r--r--.travis.yml2
-rw-r--r--args.hxx22
2 files changed, 12 insertions, 12 deletions
diff --git a/.travis.yml b/.travis.yml
index b793be5..d4892fe 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -42,7 +42,7 @@ matrix:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-6']
- env: COMPILER=g++-6 CONFIG=Debug
+ env: COMPILER=g++-6 CONFIG=Debug FLAGS='-fsanitize=address,undefined -fno-sanitize-recover=all -fuse-ld=gold'
- os: linux
addons:
diff --git a/args.hxx b/args.hxx
index 6ec4ab0..8839253 100644
--- a/args.hxx
+++ b/args.hxx
@@ -532,18 +532,18 @@ namespace args
class Base
{
private:
- Options options;
+ Options options = {};
protected:
- bool matched;
+ bool matched = false;
const std::string help;
#ifdef ARGS_NOEXCEPT
/// Only for ARGS_NOEXCEPT
- mutable Error error;
+ mutable Error error = Error::None;
#endif
public:
- Base(const std::string &help_, Options options_ = {}) : options(options_), matched(false), help(help_) {}
+ Base(const std::string &help_, Options options_ = {}) : options(options_), help(help_) {}
virtual ~Base() {}
Options GetOptions() const noexcept
@@ -655,10 +655,10 @@ namespace args
{
protected:
const std::string name;
- bool kickout;
+ bool kickout = false;
public:
- NamedBase(const std::string &name_, const std::string &help_, Options options_ = {}) : Base(help_, options_), name(name_), kickout(false) {}
+ NamedBase(const std::string &name_, const std::string &help_, Options options_ = {}) : Base(help_, options_), name(name_) {}
virtual ~NamedBase() {}
virtual std::vector<std::tuple<std::string, std::string, unsigned>> GetDescription(const HelpParams &, const unsigned indentLevel) const override
@@ -1723,10 +1723,10 @@ namespace args
std::string terminator;
- bool allowJoinedShortValue;
- bool allowJoinedLongValue;
- bool allowSeparateShortValue;
- bool allowSeparateLongValue;
+ bool allowJoinedShortValue = true;
+ bool allowJoinedLongValue = true;
+ bool allowSeparateShortValue = true;
+ bool allowSeparateLongValue = true;
protected:
enum class OptionType
@@ -2317,7 +2317,7 @@ namespace args
command.subparser = &parser;
}
- Command::RaiiSubparser::RaiiSubparser(const Command &command_, const HelpParams &params_): command(command_), parser(command, params_)
+ Command::RaiiSubparser::RaiiSubparser(const Command &command_, const HelpParams &params_): command(command_), parser(command, params_), oldSubparser(command.subparser)
{
command.subparser = &parser;
}