Commit ecc37096 authored by Dominik Charousset's avatar Dominik Charousset

Fix recursion issue in composable behaviors

parent 463c9c20
...@@ -31,7 +31,7 @@ class abstract_composable_behavior { ...@@ -31,7 +31,7 @@ class abstract_composable_behavior {
public: public:
virtual ~abstract_composable_behavior(); virtual ~abstract_composable_behavior();
virtual unit_t init_behavior(message_handler& x) = 0; virtual void init_behavior(message_handler& x) = 0;
}; };
} // namespace caf } // namespace caf
......
...@@ -89,7 +89,11 @@ public: ...@@ -89,7 +89,11 @@ public:
return unit; return unit;
} }
unit_t init_behavior(message_handler& x) override { void init_behavior(message_handler& x) override {
init_behavior_impl(x);
}
unit_t init_behavior_impl(message_handler& x) {
if (x) if (x)
x = x.or_else(composable_behavior_base<Clauses>::make_callback()...); x = x.or_else(composable_behavior_base<Clauses>::make_callback()...);
else else
......
...@@ -57,8 +57,12 @@ public: ...@@ -57,8 +57,12 @@ public:
return unit(static_cast<Ts*>(this)->init_selfptr(x)...); return unit(static_cast<Ts*>(this)->init_selfptr(x)...);
} }
unit_t init_behavior(message_handler& x) override { void init_behavior(message_handler& x) override {
return unit(static_cast<Ts*>(this)->init_behavior(x)...); init_behavior_impl(x);
}
unit_t init_behavior_impl(message_handler& x) {
return unit(static_cast<Ts*>(this)->init_behavior_impl(x)...);
} }
protected: protected:
......
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