-
Notifications
You must be signed in to change notification settings - Fork 89
Open
Description
If a resource is within its subresource there is not limit on recursion:
nmos-cpp/Development/nmos/resources.cpp
Lines 148 to 152 in 6d64db8
| for (auto& sub_resource : found->sub_resources) | |
| { | |
| count += erase_resource(resources, sub_resource, forget_now); | |
| } | |
Suggested patch:
const auto sid = utility::us2s(id);
[...]
for (auto& sub_resource : found->sub_resources)
{
if (sub_resource != sid)
{
count += erase_resource(resources, sub_resource, forget_now);
}
}
Before the sugegsted patch stack is filled with (notice the same resource is erased recursively):
[...]
frame #58169: 0x00007ffa38c28f1d libmatrox_ipmx_c_api.so`nmos::erase_resource(resources=0x00007ff9bc0050e8, id="6a148326-c4f9-4a26-89b1-31083e516c60", forget_now=true)>, mpl_::na, mpl_::na>, boost::multi_index::ordered_non_unique<boost::multi_index::tag<nmos::tags::type, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::composite_key<nmos::resource, boost::multi_index::const_mem_fun<nmos::resource, bool, &(nmos::resource::has_data() const)>, boost::multi_index::member<nmos::resource, nmos::type, &(nmos::resource::type)>, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, mpl_::na>, boost::multi_index::ordered_unique<boost::multi_index::tag<nmos::tags::created, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<nmos::resource, nmos::tai, &(nmos::resource::created)>, std::greater<nmos::tai> >, boost::multi_index::ordered_unique<boost::multi_index::tag<nmos::tags::updated, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<nmos::resource, nmos::tai, &(nmos::resource::updated)>, std::greater<nmos::tai> >, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<nmos::resource> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) at resources.cpp:150:40
frame #58170: 0x00007ffa38c28f1d libmatrox_ipmx_c_api.so`nmos::erase_resource(resources=0x00007ff9bc0050e8, id="6a148326-c4f9-4a26-89b1-31083e516c60", forget_now=true)>, mpl_::na, mpl_::na>, boost::multi_index::ordered_non_unique<boost::multi_index::tag<nmos::tags::type, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::composite_key<nmos::resource, boost::multi_index::const_mem_fun<nmos::resource, bool, &(nmos::resource::has_data() const)>, boost::multi_index::member<nmos::resource, nmos::type, &(nmos::resource::type)>, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, mpl_::na>, boost::multi_index::ordered_unique<boost::multi_index::tag<nmos::tags::created, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<nmos::resource, nmos::tai, &(nmos::resource::created)>, std::greater<nmos::tai> >, boost::multi_index::ordered_unique<boost::multi_index::tag<nmos::tags::updated, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<nmos::resource, nmos::tai, &(nmos::resource::updated)>, std::greater<nmos::tai> >, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<nmos::resource> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) at resources.cpp:150:40
frame #58171: 0x00007ffa38c28f1d libmatrox_ipmx_c_api.so`nmos::erase_resource(resources=0x00007ff9bc0050e8, id="6a148326-c4f9-4a26-89b1-31083e516c60", forget_now=true)>, mpl_::na, mpl_::na>, boost::multi_index::ordered_non_unique<boost::multi_index::tag<nmos::tags::type, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::composite_key<nmos::resource, boost::multi_index::const_mem_fun<nmos::resource, bool, &(nmos::resource::has_data() const)>, boost::multi_index::member<nmos::resource, nmos::type, &(nmos::resource::type)>, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, mpl_::na>, boost::multi_index::ordered_unique<boost::multi_index::tag<nmos::tags::created, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<nmos::resource, nmos::tai, &(nmos::resource::created)>, std::greater<nmos::tai> >, boost::multi_index::ordered_unique<boost::multi_index::tag<nmos::tags::updated, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<nmos::resource, nmos::tai, &(nmos::resource::updated)>, std::greater<nmos::tai> >, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<nmos::resource> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) at resources.cpp:150:40
frame #58172: 0x00007ffa38c28f1d libmatrox_ipmx_c_api.so`nmos::erase_resource(resources=0x00007ff9bc0050e8, id="6a148326-c4f9-4a26-89b1-31083e516c60", forget_now=true)>, mpl_::na, mpl_::na>, boost::multi_index::ordered_non_unique<boost::multi_index::tag<nmos::tags::type, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::composite_key<nmos::resource, boost::multi_index::const_mem_fun<nmos::resource, bool, &(nmos::resource::has_data() const)>, boost::multi_index::member<nmos::resource, nmos::type, &(nmos::resource::type)>, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, mpl_::na>, boost::multi_index::ordered_unique<boost::multi_index::tag<nmos::tags::created, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<nmos::resource, nmos::tai, &(nmos::resource::created)>, std::greater<nmos::tai> >, boost::multi_index::ordered_unique<boost::multi_index::tag<nmos::tags::updated, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<nmos::resource, nmos::tai, &(nmos::resource::updated)>, std::greater<nmos::tai> >, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<nmos::resource> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) at resources.cpp:150:40
[...]
Metadata
Metadata
Assignees
Labels
No labels