use std::copy for efficiency
This commit is contained in:
parent
b934477b19
commit
7a49267125
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user