Fix the bug of using freed memory introduced by recent plain table reader patch

Summary: Recent patch introduced a bug that if non-mmap mode is used, in prefix encoding case, there is a resizing of cur_key_ within the same prefix, we still read prefix from the released buffer. It fails ASAN tests and this commit fixes it.

Test Plan: Run the ASAN tests for the failing test case.

Reviewers: IslamAbdelRahman, yhchiang, anthony, igor, kradhakrishnan, rven

Subscribers: leveldb, dhruba

Differential Revision: https://reviews.facebook.net/D47457
This commit is contained in:
sdong 2015-09-23 15:43:04 -07:00
parent 628216fc1f
commit a70d08ec07

View File

@ -407,6 +407,7 @@ Status PlainTableKeyDecoder::NextPrefixEncodingKey(
cur_key_.SetInternalKey(tmp, *parsed_key);
parsed_key->user_key =
Slice(cur_key_.GetKey().data(), prefix_len_ + size);
saved_user_key_ = cur_key_.GetKey();
} else {
cur_key_.Reserve(prefix_len_ + size);
cur_key_.SetInternalKey(Slice(saved_user_key_.data(), prefix_len_),