The destructors get a noexcept(true) spec by default, but these
destructors in fact throw exceptions. An alternative fix might be to not
throw (most if not all of these throws are non-essential
error-reporting/logging).
CHECK_AND_ASSERT_THROW_MES(m_counter_ref<EPEE_PORTABLE_STORAGE_RECURSION_LIMIT_INTERNAL,"Wrong blob data in portable storage: recursion limitation ("<<EPEE_PORTABLE_STORAGE_RECURSION_LIMIT_INTERNAL<<") exceeded");
CHECK_AND_ASSERT_THROW_MES(m_counter_ref<EPEE_PORTABLE_STORAGE_RECURSION_LIMIT_INTERNAL,"Wrong blob data in portable storage: recursion limitation ("<<EPEE_PORTABLE_STORAGE_RECURSION_LIMIT_INTERNAL<<") exceeded");
}
}
~recursuion_limitation_guard()
~recursuion_limitation_guard()noexcept(false)
{
{
CHECK_AND_ASSERT_THROW_MES(m_counter_ref!=0,"Internal error: m_counter_ref == 0 while ~recursuion_limitation_guard()");
CHECK_AND_ASSERT_THROW_MES(m_counter_ref!=0,"Internal error: m_counter_ref == 0 while ~recursuion_limitation_guard()");