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 {}; } 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();