diff --git a/components/streams/src/builder.cpp b/components/streams/src/builder.cpp index 91fa4cfa250df2388fee63cf0e25faff01aebbdd..c0e1590991f62ff2e2174bab34a463758b98bb5e 100644 --- a/components/streams/src/builder.cpp +++ b/components/streams/src/builder.cpp @@ -91,10 +91,12 @@ ftl::data::Frame &Builder::get(int64_t timestamp, size_t ix) { auto fs = _get(timestamp); if (ix >= fs->frames.size()) { - throw FTL_Error("Frame index out-of-bounds - " << ix << "(" << fs->frames.size() << ")"); - //while (fs->frames.size() < size_) { - // fs->frames.push_back(std::move(pool_->allocate(ftl::data::FrameID(fs->frameset(), + fs->frames.size()), fs->timestamp()))); - //} + //throw FTL_Error("Frame index out-of-bounds - " << ix << "(" << fs->frames.size() << ")"); + + // FIXME: This is really dangerous + while (fs->frames.size() < size_) { + fs->frames.push_back(std::move(pool_->allocate(ftl::data::FrameID(fs->frameset(), + fs->frames.size()), fs->timestamp()))); + } } //if (fs->frames.size() < size_) fs->frames.resize(size_); diff --git a/components/structures/src/new_frame.cpp b/components/structures/src/new_frame.cpp index fc4e92006ecda3b6953b109b2f7dd8cf6c9ab48c..f969023fc3ea6a4715a74a0b9ee57bb1ebc1faf5 100644 --- a/components/structures/src/new_frame.cpp +++ b/components/structures/src/new_frame.cpp @@ -243,6 +243,8 @@ void Frame::merge(Frame &f) { d.status = ChannelStatus::VALID; touch(x.first); } + f.status_ = FrameStatus::RELEASED; + f.changed_.clear(); } void Frame::moveTo(Frame &f) {