Use `OptionalCompactString` instead of `std::optional<CompactString>`. It is more compact. PiperOrigin-RevId: 866726446
diff --git a/riegeli/containers/BUILD b/riegeli/containers/BUILD index 7e2c752..d31ca66 100644 --- a/riegeli/containers/BUILD +++ b/riegeli/containers/BUILD
@@ -19,6 +19,7 @@ "//riegeli/base:debug", "//riegeli/base:dependency", "//riegeli/base:iterable", + "//riegeli/base:optional_compact_string", "//riegeli/base:stream_utils", "//riegeli/bytes:compact_string_writer", "//riegeli/bytes:reader",
diff --git a/riegeli/containers/linear_sorted_string_set.cc b/riegeli/containers/linear_sorted_string_set.cc index eda6cba..2a46d47 100644 --- a/riegeli/containers/linear_sorted_string_set.cc +++ b/riegeli/containers/linear_sorted_string_set.cc
@@ -298,8 +298,9 @@ size_t current_length = 0; CompactString current_if_validated_and_shared; std::optional<absl::string_view> current_if_validated; - if (options.decode_state() != nullptr) { - current_if_validated = options.decode_state()->last; + if (options.decode_state() != nullptr && + options.decode_state()->last != nullptr) { + current_if_validated = *options.decode_state()->last; } const absl::string_view encoded_view = encoded; const char* ptr = encoded_view.data();
diff --git a/riegeli/containers/linear_sorted_string_set.h b/riegeli/containers/linear_sorted_string_set.h index bd44edf..15d940e 100644 --- a/riegeli/containers/linear_sorted_string_set.h +++ b/riegeli/containers/linear_sorted_string_set.h
@@ -22,7 +22,6 @@ #include <initializer_list> #include <iosfwd> #include <iterator> -#include <optional> #include <string> #include <type_traits> #include <utility> @@ -38,6 +37,7 @@ #include "riegeli/base/compare.h" #include "riegeli/base/dependency.h" #include "riegeli/base/iterable.h" +#include "riegeli/base/optional_compact_string.h" #include "riegeli/bytes/compact_string_writer.h" #include "riegeli/bytes/reader.h" #include "riegeli/bytes/writer.h" @@ -66,9 +66,9 @@ // Total number of elements decoded so far. The size is calculated as a side // effect of structural validation; calling `size()` later would be slower. size_t cumulative_size = 0; - // If not `std::nullopt`, the last element in the last decoded set. - // Meaningful only if `DecodeOptions::validate()`. - std::optional<CompactString> last; + // If not `nullptr`, the last element in the last decoded set. Meaningful + // only if `DecodeOptions::validate()`. + OptionalCompactString last; }; // Options for `Decode()`.