diff --git a/ostd/signal.hh b/ostd/signal.hh index 98e83f1..b8e183a 100644 --- a/ostd/signal.hh +++ b/ostd/signal.hh @@ -43,6 +43,11 @@ namespace detail { template Size connect(F &&func) { using Func = Function; + for (Size i = 0; i < p_nfuncs; ++i) + if (!p_funcs[i]) { + p_funcs[i] = forward(func); + return i; + } Func *nbuf = (Func *)new byte[sizeof(Func) * (p_nfuncs + 1)]; for (Size i = 0; i < p_nfuncs; ++i) { new (&nbuf[i]) Func(move(p_funcs[i]));