Closed tobijk closed 6 years ago
Transmit PDO mappings for uint64_t fail because in TransmitPDOMapping::send the data vector is resized to one byte too many. Meaning that data.resize(max_byte+1) will be 9 for a int64, which will trigger the assertion at the top of PDO::send.
TransmitPDOMapping::send
data.resize(max_byte+1)
PDO::send
diff --ignore-space-change -urN a/master/src/transmit_pdo_mapping.cpp b/master/src/transmit_pdo_mapping.cpp --- a/master/src/transmit_pdo_mapping.cpp 2018-01-08 11:04:18.000000000 +0100 +++ b/master/src/transmit_pdo_mapping.cpp 2018-02-02 17:04:54.653689010 +0100 @@ -88,9 +88,8 @@ } - data.resize(max_byte+1); + data.resize(max_byte); m_core.pdo.send(cob_id, data); - } void TransmitPDOMapping::check_correctness() const {
Fixed. Thank you.
Transmit PDO mappings for uint64_t fail because in
TransmitPDOMapping::send
the data vector is resized to one byte too many. Meaning thatdata.resize(max_byte+1)
will be 9 for a int64, which will trigger the assertion at the top ofPDO::send
.