From d17a5195e7f38a00364b38eeb1066dfd7484dba3 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Wed, 27 Jan 2021 00:18:02 +0800 Subject: [PATCH] can_list_to_can_capnp_cpp: write message directly to the output string (#19912) --- selfdrive/boardd/can_list_to_can_capnp.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/selfdrive/boardd/can_list_to_can_capnp.cc b/selfdrive/boardd/can_list_to_can_capnp.cc index 2fa3f5b9b..bbbceee6e 100644 --- a/selfdrive/boardd/can_list_to_can_capnp.cc +++ b/selfdrive/boardd/can_list_to_can_capnp.cc @@ -22,8 +22,10 @@ void can_list_to_can_capnp_cpp(const std::vector &can_list, std::stri c.setDat(kj::arrayPtr((uint8_t*)it->dat.data(), it->dat.size())); c.setSrc(it->src); } - auto bytes = msg.toBytes(); - out.append((const char *)bytes.begin(), bytes.size()); + const uint64_t msg_size = capnp::computeSerializedSizeInWords(msg) * sizeof(capnp::word); + out.resize(msg_size); + kj::ArrayOutputStream output_stream(kj::ArrayPtr((unsigned char *)out.data(), msg_size)); + capnp::writeMessage(output_stream, msg); } }