Commit e9065d26 authored by Dominik Charousset's avatar Dominik Charousset

Fix stack-reference issues

parent 76831743
...@@ -145,7 +145,8 @@ behavior peer_acceptor_fun(broker* self, const actor& buddy) { ...@@ -145,7 +145,8 @@ behavior peer_acceptor_fun(broker* self, const actor& buddy) {
} }
void run_client(int argc, char** argv, uint16_t port) { void run_client(int argc, char** argv, uint16_t port) {
actor_system system{actor_system_config{}.load<io::middleman>().parse(argc, argv)}; actor_system_config cfg;
actor_system system{cfg.load<io::middleman>().parse(argc, argv)};
auto p = system.spawn(ping, size_t{10}); auto p = system.spawn(ping, size_t{10});
CAF_MESSAGE("spawn_client..."); CAF_MESSAGE("spawn_client...");
auto cl = system.middleman().spawn_client(peer_fun, "127.0.0.1", port, p); auto cl = system.middleman().spawn_client(peer_fun, "127.0.0.1", port, p);
...@@ -155,7 +156,8 @@ void run_client(int argc, char** argv, uint16_t port) { ...@@ -155,7 +156,8 @@ void run_client(int argc, char** argv, uint16_t port) {
} }
void run_server(int argc, char** argv) { void run_server(int argc, char** argv) {
actor_system system{actor_system_config{}.load<io::middleman>().parse(argc, argv)}; actor_system_config cfg;
actor_system system{cfg.load<io::middleman>().parse(argc, argv)};
scoped_actor self{system}; scoped_actor self{system};
CAF_MESSAGE("spawn peer acceptor"); CAF_MESSAGE("spawn peer acceptor");
auto serv = system.middleman().spawn_broker(peer_acceptor_fun, auto serv = system.middleman().spawn_broker(peer_acceptor_fun,
......
...@@ -171,8 +171,7 @@ behavior server(broker* self) { ...@@ -171,8 +171,7 @@ behavior server(broker* self) {
class fixture { class fixture {
public: public:
fixture() : system(actor_system_config{} fixture() : system(cfg.load<io::middleman, network::test_multiplexer>()),
.load<io::middleman, network::test_multiplexer>()),
aut_(unsafe_actor_handle_init) { aut_(unsafe_actor_handle_init) {
mpx_ = dynamic_cast<network::test_multiplexer*>(&system.middleman().backend()); mpx_ = dynamic_cast<network::test_multiplexer*>(&system.middleman().backend());
CAF_REQUIRE(mpx_ != nullptr); CAF_REQUIRE(mpx_ != nullptr);
...@@ -227,6 +226,7 @@ public: ...@@ -227,6 +226,7 @@ public:
return {this}; return {this};
} }
actor_system_config cfg;
actor_system system; actor_system system;
actor aut_; actor aut_;
abstract_broker* aut_ptr_; abstract_broker* aut_ptr_;
......
...@@ -116,7 +116,8 @@ void run_client(int argc, char** argv, uint16_t port) { ...@@ -116,7 +116,8 @@ void run_client(int argc, char** argv, uint16_t port) {
} }
void run_server(int argc, char** argv) { void run_server(int argc, char** argv) {
actor_system system{actor_system_config{}.load<io::middleman>().parse(argc, argv)}; actor_system_config cfg;
actor_system system{cfg.load<io::middleman>().parse(argc, argv)};
auto serv = system.spawn(server); auto serv = system.spawn(server);
auto port = system.middleman().publish(serv, 0); auto port = system.middleman().publish(serv, 0);
CAF_REQUIRE(port != 0); CAF_REQUIRE(port != 0);
......
...@@ -159,7 +159,8 @@ acceptor::behavior_type acceptor_fun(acceptor::broker_pointer self, ...@@ -159,7 +159,8 @@ acceptor::behavior_type acceptor_fun(acceptor::broker_pointer self,
} }
void run_client(int argc, char** argv, uint16_t port) { void run_client(int argc, char** argv, uint16_t port) {
actor_system system{actor_system_config{}.load<io::middleman>().parse(argc, argv)}; actor_system_config cfg;
actor_system system{cfg.load<io::middleman>().parse(argc, argv)};
auto p = system.spawn(ping, size_t{10}); auto p = system.spawn(ping, size_t{10});
CAF_MESSAGE("spawn_client_typed..."); CAF_MESSAGE("spawn_client_typed...");
auto cl = system.middleman().spawn_client(peer_fun, "localhost", port, p); auto cl = system.middleman().spawn_client(peer_fun, "localhost", port, p);
...@@ -169,7 +170,8 @@ void run_client(int argc, char** argv, uint16_t port) { ...@@ -169,7 +170,8 @@ void run_client(int argc, char** argv, uint16_t port) {
} }
void run_server(int argc, char** argv) { void run_server(int argc, char** argv) {
actor_system system{actor_system_config{}.load<io::middleman>().parse(argc, argv)}; actor_system_config cfg;
actor_system system{cfg.load<io::middleman>().parse(argc, argv)};
scoped_actor self{system}; scoped_actor self{system};
auto serv = system.middleman().spawn_broker(acceptor_fun, system.spawn(pong)); auto serv = system.middleman().spawn_broker(acceptor_fun, system.spawn(pong));
std::thread child; std::thread child;
......
...@@ -56,8 +56,7 @@ public: ...@@ -56,8 +56,7 @@ public:
struct fixture { struct fixture {
fixture() : testee(unsafe_actor_handle_init) { fixture() : testee(unsafe_actor_handle_init) {
new (&system) actor_system(actor_system_config{} new (&system) actor_system(cfg.load<io::middleman>()
.load<io::middleman>()
.parse(test::engine::argc(), .parse(test::engine::argc(),
test::engine::argv())); test::engine::argv()));
testee = system.spawn<dummy>(); testee = system.spawn<dummy>();
...@@ -92,6 +91,7 @@ struct fixture { ...@@ -92,6 +91,7 @@ struct fixture {
return result; return result;
} }
actor_system_config cfg;
union { actor_system system; }; // manually control ctor/dtor union { actor_system system; }; // manually control ctor/dtor
actor testee; actor testee;
}; };
......
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