summaryrefslogtreecommitdiff
path: root/absl/flags/internal/type_erased.cc
diff options
context:
space:
mode:
Diffstat (limited to 'absl/flags/internal/type_erased.cc')
-rw-r--r--absl/flags/internal/type_erased.cc19
1 files changed, 2 insertions, 17 deletions
diff --git a/absl/flags/internal/type_erased.cc b/absl/flags/internal/type_erased.cc
index cc103983..2984291c 100644
--- a/absl/flags/internal/type_erased.cc
+++ b/absl/flags/internal/type_erased.cc
@@ -32,7 +32,6 @@ bool GetCommandLineOption(absl::string_view name, std::string* value) {
return false;
}
- absl::MutexLock l(InitFlagIfNecessary(flag));
*value = flag->CurrentValue();
return true;
}
@@ -88,22 +87,9 @@ bool SetCommandLineOptionWithMode(absl::string_view name,
bool IsValidFlagValue(absl::string_view name, absl::string_view value) {
CommandLineFlag* flag = flags_internal::FindCommandLineFlag(name);
- if (flag == nullptr) {
- return false;
- }
-
- if (flag->IsRetired()) {
- return true;
- }
- // No need to lock the flag since we are not mutating it.
- void* obj = Clone(flag->op, flag->def);
- std::string ignored_error;
- const bool result =
- flags_internal::Parse(flag->marshalling_op, value, obj, &ignored_error) &&
- Validate(flag, obj);
- Delete(flag->op, obj);
- return result;
+ return flag != nullptr &&
+ (flag->IsRetired() || flag->ValidateInputValue(value));
}
// --------------------------------------------------------------------
@@ -111,7 +97,6 @@ bool IsValidFlagValue(absl::string_view name, absl::string_view value) {
bool SpecifiedOnCommandLine(absl::string_view name) {
CommandLineFlag* flag = flags_internal::FindCommandLineFlag(name);
if (flag != nullptr && !flag->IsRetired()) {
- absl::MutexLock l(InitFlagIfNecessary(flag));
return flag->IsSpecifiedOnCommandLine();
}
return false;