Closed jmiturasolutions closed 1 year ago
When using QCoroSignalListener in following code I am getting crash:
struct Payload { QString someData; }; struct Message { int id = 0; Payload payload; }; class DeMux : public QObject { Q_OBJECT public: void send(const Message &msg) { emit messageReceived(msg); } Q_SIGNAL void messageReceived(const Message &msg); QCoro::Task<Payload> waitForMessage(int id) { QCORO_FOREACH(Message msg, qCoroSignalListener(this, &DeMux::messageReceived)) { if (msg.id == id) { co_return msg.payload; } } co_return {}; } }; Q_DECLARE_METATYPE(Message); int main() { Message msg1 { .id = 1, .payload = { .someData = "msg1" } }; Message msg2 { .id = 2, .payload = { .someData = "msg2" } }; DeMux demux; QCoro::Task<> task = [&]() -> QCoro::Task<> { auto wait1 = demux.waitForMessage(1); auto wait2 = demux.waitForMessage(2); demux.send(msg1); demux.send(msg2); co_await wait1; co_await wait2; }(); QCoro::waitFor(task); return 0; }
Issue is not isolated to QCoroSignalListener. Same happens if I replace impl with plain QCoroSignal:
QCoro::Task<Payload> waitForMessage(int id) { while (true) { Message msg = co_await qCoro(this, &DeMux::messageReceived); if (msg.id == id) { co_return msg.payload; } } co_return {}; }
I am on Windows 10 x64 using VS2019 with QCoro 0.8.0 and Qt 5.15.6.
When using QCoroSignalListener in following code I am getting crash:
Issue is not isolated to QCoroSignalListener. Same happens if I replace impl with plain QCoroSignal:
I am on Windows 10 x64 using VS2019 with QCoro 0.8.0 and Qt 5.15.6.