From b6dd1e3a14200d0a7e9615401c1d9f9dc9ec43ec Mon Sep 17 00:00:00 2001 From: Pavel Kirienko Date: Sat, 8 Mar 2014 20:10:10 +0400 Subject: [PATCH] GDTR fix - double remove() before registering --- .../include/uavcan/global_data_type_registry.hpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/libuavcan/include/uavcan/global_data_type_registry.hpp b/libuavcan/include/uavcan/global_data_type_registry.hpp index 9da1edd094..3d3d60cceb 100644 --- a/libuavcan/include/uavcan/global_data_type_registry.hpp +++ b/libuavcan/include/uavcan/global_data_type_registry.hpp @@ -75,11 +75,17 @@ public: return RegistResultFrozen; static Entry entry; - const RegistResult remove_res = remove(&entry); - if (remove_res != RegistResultOk) - return remove_res; - + { + const RegistResult remove_res = remove(&entry); + if (remove_res != RegistResultOk) + return remove_res; + } entry = Entry(DataTypeKind(Type::DataTypeKind), id, Type::getDataTypeSignature(), Type::getDataTypeFullName()); + { + const RegistResult remove_res = remove(&entry); + if (remove_res != RegistResultOk) + return remove_res; + } return registImpl(&entry); }