1
0
Fork 0

use std::copy for efficiency

This commit is contained in:
Kevin Matz 2021-08-29 11:06:00 -04:00
parent b934477b19
commit 7a49267125
1 changed files with 8 additions and 6 deletions

View File

@ -134,15 +134,17 @@ void address_pair_list::iStream(PDU::Stream stream)
range pr(type_->data_type, type_->address_length);
pr.iStream(stream);
if (!stream->good() || pr.count * pr.incriment > stream->available()) {
stream->setstate(std::ios_base::failbit);
return;
}
if (!stream->good() || stream->available() < pr.count * pr.incriment)
return stream->setstate(std::ios_base::failbit);
// Property Data
std::vector<uint8_t> pd;
for (uint32_t i = 0; i < pr.count * pr.incriment; i ++)
pd.push_back(stream->readType<uint8_t>());
std::copy(stream->data(), stream->data() + pr.count * pr.incriment,
std::back_inserter(pd));
stream->ignore(pd.size());
if (!stream->available())
stream->setstate(std::ios_base::eofbit);
// Property Fields
properties.push_back(address_data_pair(pr, pd));