Fix the valgrind error
Summary: I this bug from valgrind report and found a place that may potentially leak memory. Test Plan: re-ran the valgrind and no error any more Reviewers: emayanke Reviewed By: emayanke CC: leveldb Differential Revision: https://reviews.facebook.net/D13959
This commit is contained in:
parent
444cf88a56
commit
bba6595b1f
@ -215,12 +215,12 @@ bool TransactionLogIteratorImpl::IsBatchExpected(
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TransactionLogIteratorImpl::UpdateCurrentWriteBatch(const Slice& record) {
|
void TransactionLogIteratorImpl::UpdateCurrentWriteBatch(const Slice& record) {
|
||||||
WriteBatch* batch = new WriteBatch();
|
std::unique_ptr<WriteBatch> batch(new WriteBatch());
|
||||||
WriteBatchInternal::SetContents(batch, record);
|
WriteBatchInternal::SetContents(batch.get(), record);
|
||||||
|
|
||||||
SequenceNumber expectedSeq = currentLastSeq_ + 1;
|
SequenceNumber expectedSeq = currentLastSeq_ + 1;
|
||||||
// If the iterator has started, then confirm that we get continuous batches
|
// If the iterator has started, then confirm that we get continuous batches
|
||||||
if (started_ && !IsBatchExpected(batch, expectedSeq)) {
|
if (started_ && !IsBatchExpected(batch.get(), expectedSeq)) {
|
||||||
// Seek to the batch having expected sequence number
|
// Seek to the batch having expected sequence number
|
||||||
if (expectedSeq < files_->at(currentFileIndex_)->StartSequence()) {
|
if (expectedSeq < files_->at(currentFileIndex_)->StartSequence()) {
|
||||||
// Expected batch must lie in the previous log file
|
// Expected batch must lie in the previous log file
|
||||||
@ -233,12 +233,13 @@ void TransactionLogIteratorImpl::UpdateCurrentWriteBatch(const Slice& record) {
|
|||||||
return SeekToStartSequence(currentFileIndex_, true);
|
return SeekToStartSequence(currentFileIndex_, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
currentBatchSeq_ = WriteBatchInternal::Sequence(batch);
|
currentBatchSeq_ = WriteBatchInternal::Sequence(batch.get());
|
||||||
currentLastSeq_ = currentBatchSeq_ + WriteBatchInternal::Count(batch) - 1;
|
currentLastSeq_ = currentBatchSeq_ +
|
||||||
|
WriteBatchInternal::Count(batch.get()) - 1;
|
||||||
// currentBatchSeq_ can only change here
|
// currentBatchSeq_ can only change here
|
||||||
assert(currentLastSeq_ <= dbimpl_->GetLatestSequenceNumber());
|
assert(currentLastSeq_ <= dbimpl_->GetLatestSequenceNumber());
|
||||||
|
|
||||||
currentBatch_.reset(batch);
|
currentBatch_ = move(batch);
|
||||||
isValid_ = true;
|
isValid_ = true;
|
||||||
currentStatus_ = Status::OK();
|
currentStatus_ = Status::OK();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user