diff --git a/components/rgbd-sources/include/ftl/rgbd/frame.hpp b/components/rgbd-sources/include/ftl/rgbd/frame.hpp
index 69ed68746f6b9095ed0937fc8b65339506421605..9bdbea42063c750e1129c698461f14bf3b36c444 100644
--- a/components/rgbd-sources/include/ftl/rgbd/frame.hpp
+++ b/components/rgbd-sources/include/ftl/rgbd/frame.hpp
@@ -477,8 +477,10 @@ void Frame::create(ftl::codecs::Channel channel, const T &value) {
 	if (static_cast<int>(channel) < static_cast<int>(ftl::codecs::Channel::Data)) throw ftl::exception("Cannot use generic type with non data channel");
 
 	data_channels_ += channel;
-	data_data_.insert({static_cast<int>(channel),{}});
-	ftl::util::FTLVectorBuffer buf(data_data_[static_cast<int>(channel)]);
+
+	auto &v = *std::get<0>(data_data_.insert({static_cast<int>(channel),{}}));
+	v.second.resize(0);
+	ftl::util::FTLVectorBuffer buf(v.second);
 	msgpack::pack(buf, value);
 }