diff --git a/db/dbformat.h b/db/dbformat.h index 1647661b8..4356dd934 100644 --- a/db/dbformat.h +++ b/db/dbformat.h @@ -146,6 +146,11 @@ class InternalKey { AppendInternalKey(&rep_, ParsedInternalKey(user_key, s, t)); } + bool Valid() const { + ParsedInternalKey parsed; + return ParseInternalKey(Slice(rep_), &parsed); + } + void DecodeFrom(const Slice& s) { rep_.assign(s.data(), s.size()); } Slice Encode() const { assert(!rep_.empty()); diff --git a/db/version_edit.cc b/db/version_edit.cc index 24d7f0d9f..2ac35c58c 100644 --- a/db/version_edit.cc +++ b/db/version_edit.cc @@ -123,7 +123,7 @@ static bool GetInternalKey(Slice* input, InternalKey* dst) { Slice str; if (GetLengthPrefixedSlice(input, &str)) { dst->DecodeFrom(str); - return true; + return dst->Valid(); } else { return false; }