From ae079a97eba4497faec8e72309e89055214c224d Mon Sep 17 00:00:00 2001 From: David Schack Date: Mon, 20 Nov 2023 04:02:04 +0000 Subject: [PATCH 1/2] Don't set entry on blackboard if remapped key isn't a blackboard pointer --- include/behaviortree_cpp/tree_node.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/behaviortree_cpp/tree_node.h b/include/behaviortree_cpp/tree_node.h index f195e8109..7ff713a41 100644 --- a/include/behaviortree_cpp/tree_node.h +++ b/include/behaviortree_cpp/tree_node.h @@ -491,8 +491,8 @@ inline Result TreeNode::setOutput(const std::string& key, const T& value) if (isBlackboardPointer(remapped_key)) { remapped_key = stripBlackboardPointer(remapped_key); + config().blackboard->set(static_cast(remapped_key), value); } - config().blackboard->set(static_cast(remapped_key), value); return {}; } From de25621b366418a02a024eb138ebf7e09f57163f Mon Sep 17 00:00:00 2001 From: David Schack Date: Mon, 20 Nov 2023 04:47:03 +0000 Subject: [PATCH 2/2] Add unit test --- tests/gtest_blackboard.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/gtest_blackboard.cpp b/tests/gtest_blackboard.cpp index 8b8a8c46c..08cdd188f 100644 --- a/tests/gtest_blackboard.cpp +++ b/tests/gtest_blackboard.cpp @@ -108,6 +108,25 @@ TEST(BlackboardTest, BasicRemapping) ASSERT_EQ(bb->get("my_output_port"), 22); } +TEST(BlackboardTest, NullOutputRemapping) +{ + auto bb = Blackboard::create(); + + NodeConfig config; + + config.blackboard = bb; + config.input_ports["in_port"] = "{my_input_port}"; + config.output_ports["out_port"] = ""; + bb->set("my_input_port", 11); + + BB_TestNode node("good_one", config); + node.executeTick(); + + auto bb_keys = bb->getKeys(); + auto it = std::find(bb_keys.begin(), bb_keys.end(), ""); + ASSERT_EQ(it, bb_keys.end()); +} + TEST(BlackboardTest, GetInputsFromText) { auto bb = Blackboard::create();