EcbMode: Inline the DelayedFlush() method.

This commit is contained in:
hashlag
2026-07-30 01:06:21 +03:00
parent 6ae4df4bfc
commit c9a262bac4
+13 -30
View File
@@ -198,33 +198,6 @@ public:
return out; return out;
} }
template<typename OutputIt>
struct DelayedFlushResult
{
OutputIt Next_;
uint64_t Written_;
};
template<typename OutputIt>
DelayedFlushResult<OutputIt> DelayedFlush(OutputIt outBegin, OutputIt outEnd)
{
if (PreviousBlockSaved_)
{
OutputIt result = EnsureCopy(outBegin, outEnd,
PreviousBlock_.Begin(), PreviousBlock_.End());
PreviousBlock_ = DecryptedBlock_;
return { .Next_ = result, .Written_ = CipherT::BlockSize };
}
else
{
PreviousBlock_ = DecryptedBlock_;
PreviousBlockSaved_ = true;
return { .Next_ = outBegin, .Written_ = 0 };
}
}
template<typename OutputIt, typename InputIt> template<typename OutputIt, typename InputIt>
uint64_t UpdateImpl(OutputIt outBegin, OutputIt outEnd, uint64_t UpdateImpl(OutputIt outBegin, OutputIt outEnd,
InputIt inBegin, InputIt inEnd) InputIt inBegin, InputIt inEnd)
@@ -242,10 +215,20 @@ public:
Decryptor_.DecryptBlock(DecryptedBlock_.Begin(), DecryptedBlock_.End(), Decryptor_.DecryptBlock(DecryptedBlock_.Begin(), DecryptedBlock_.End(),
Block_.Begin(), Block_.End()); Block_.Begin(), Block_.End());
auto result = DelayedFlush(out, outEnd);
out = result.Next_; if (PreviousBlockSaved_)
written += result.Written_; {
out = EnsureCopy(out, outEnd,
PreviousBlock_.Begin(), PreviousBlock_.End());
PreviousBlock_ = DecryptedBlock_;
written += CipherT::BlockSize;
}
else
{
PreviousBlock_ = DecryptedBlock_;
PreviousBlockSaved_ = true;
}
} }
} }