On Friday, 18 May 2018 at 09:35:28 UTC, Majestio wrote:


Also, I believe this is __lambda1:

m_queue = () @trusted { return kqueue(); } ();

Is `kqueue()` nothrow? You probably need to decorate that lambda with `nothrow`. (i.e. put a `nothrow` right after `@trusted`.

Mike

`kqueue()` is not nothrow. From log: "Error: function 'core.sys.freebsd.sys.event.kqueue' is not nothrow"

This decoration does not solve the problem :(

But you're calling it from a `nothrow` function through a lambda that is also not `nothrow`. Decorate your lambda as `nothrow` and then, if you can't make `kqueue()` `nothrow`, put it in a try-catch and figure out what to do if it does throw.

m_queue = () @trusted nothrow
{
    try
    {
        return kqueue();
    }
    catch(Exception ex)
    {
        // what do you want to do about it?
    }
} ();

Mike

Reply via email to