Commit e3526dee authored by neverlord's avatar neverlord

bugfix and CPPA_CRITICAL

parent 55e5f2c6
......@@ -176,14 +176,14 @@ class abstract_actor : public Base
}
else
{
auto result = m_nodes.back();
mailbox_element* result = m_nodes.back();
m_nodes.pop_back();
result->next = nullptr;
result->marked = false;
result->sender = sender;
result->msg = std::move(msg);
return result;
}
}
inline void release_node(mailbox_element* node)
......
......@@ -63,7 +63,7 @@
#elif defined(CPPA_GCC)
# define CPPA_MEMORY_BARRIER() __sync_synchronize()
#else
# error Plattform and/or compiler not supportet
# error Plattform and/or compiler not supported
#endif
#ifdef CPPA_DEBUG
......@@ -83,8 +83,18 @@
if ((stmt) == false) { \
CPPA_REQUIRE__(#stmt, __FILE__, __LINE__); \
}((void) 0)
#define CPPA_CRITICAL__(error, file, line) \
printf("%s:%u: critical error: '%s'\n", file, line, error); \
{ \
void *array[10]; \
size_t size = backtrace(array, 10); \
backtrace_symbols_fd(array, size, 2); \
} \
exit(7)
#define CPPA_CRITICAL(error) CPPA_CRITICAL__(error, __FILE__, __LINE__)
#else // CPPA_DEBUG
#define CPPA_REQUIRE(unused) ((void) 0)
#define CPPA_CRITICAL(unused) exit(7)
#endif // CPPA_DEBUG
#endif // CPPA_CONFIG_HPP
......@@ -82,7 +82,7 @@ class nestable_invoke_policy
++i;
break;
}
default: exit(7); // illegal state
default: CPPA_CRITICAL("illegal result of handle_message");
}
}
return false;
......@@ -107,9 +107,12 @@ class nestable_invoke_policy
break;
}
case hm_skip_msg:
{
CPPA_CRITICAL("received a marked node");
}
default:
{
exit(7); // illegal state
CPPA_CRITICAL("illegal result of handle_message");
}
}
return false;
......
......@@ -57,13 +57,8 @@ struct recursive_queue_node
{
}
inline recursive_queue_node(recursive_queue_node&& other)
: next(nullptr)
, marked(false)
, sender(std::move(other.sender))
, msg(std::move(other.msg))
{
}
recursive_queue_node(recursive_queue_node const&) = delete;
recursive_queue_node& operator=(recursive_queue_node const&) = delete;
struct guard
{
......
......@@ -106,7 +106,7 @@ class yielding_actor : public abstract_scheduled_actor
{
return false;
}
default: exit(7); // illegal state
default: CPPA_CRITICAL("illegal result of filter_msg");
}
return false;
}
......
......@@ -128,7 +128,7 @@ void abstract_event_based_actor::resume(util::fiber*, scheduler::callback* cb)
{
return;
}
default: exit(7); // illegal state
default: CPPA_CRITICAL("illegal actor state");
};
}
}
......@@ -178,7 +178,7 @@ void abstract_event_based_actor::resume(util::fiber*, scheduler::callback* cb)
++i;
break;
}
default: exit(7); // illegal state
default: CPPA_CRITICAL("illegal result of handle_message");
}
}
break;
......@@ -188,7 +188,7 @@ void abstract_event_based_actor::resume(util::fiber*, scheduler::callback* cb)
m_cache.emplace_back(e);
break;
}
default: exit(7); // illegal state
default: CPPA_CRITICAL("illegal result of handle_message");
}
}
}
......
......@@ -164,8 +164,7 @@ void yielding_actor::resume(util::fiber* from, scheduler::callback* callback)
}
default:
{
// illegal state
exit(7);
CPPA_CRITICAL("illegal yield result");
}
}
break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment