diff --git a/libuavcan/src/uc_data_type.cpp b/libuavcan/src/uc_data_type.cpp index 1e0453eb15..bfe12e8b2c 100644 --- a/libuavcan/src/uc_data_type.cpp +++ b/libuavcan/src/uc_data_type.cpp @@ -112,7 +112,7 @@ std::string DataTypeDescriptor::toString() const } using namespace std; // For snprintf() - char buf[80]; + char buf[128]; (void)snprintf(buf, sizeof(buf), "%s:%u%c:%016llx", full_name_, static_cast(id_.get()), kindch, static_cast(signature_.get())); diff --git a/libuavcan/test/data_type.cpp b/libuavcan/test/data_type.cpp index e3c6508b53..4d849076eb 100644 --- a/libuavcan/test/data_type.cpp +++ b/libuavcan/test/data_type.cpp @@ -105,6 +105,12 @@ TEST(DataTypeDescriptor, ToString) desc = uavcan::DataTypeDescriptor(uavcan::DataTypeKindMessage, 123, uavcan::DataTypeSignature(0xdeadbeef1234), "Bar"); ASSERT_EQ("Bar:123m:0000deadbeef1234", desc.toString()); + + // Max length - 80 chars + desc = uavcan::DataTypeDescriptor(uavcan::DataTypeKindMessage, 1023, uavcan::DataTypeSignature(0xdeadbeef12345678), + "sirius_cybernetics_corporation.marvin.model_a.LongDataTypeName123456789abcdefghi"); + ASSERT_EQ("sirius_cybernetics_corporation.marvin.model_a.LongDataTypeName123456789abcdefghi:1023m:deadbeef12345678", + desc.toString()); }