diff --git a/src/json_rpc_request.h b/src/json_rpc_request.h index 38309cb..e3be1b9 100644 --- a/src/json_rpc_request.h +++ b/src/json_rpc_request.h @@ -36,10 +36,11 @@ public: static FORCEINLINE void call(const char* address, int port, const char* req, T&& cb, U&& close_cb) { // It will be deleted in one of the tcp callbacks eventually - JSONRPCRequest* r = new JSONRPCRequest(address, port, req, new Callback(std::move(cb)), new Callback(std::move(close_cb))); + CallbackBase* close_callback = new Callback(std::move(close_cb)); + JSONRPCRequest* r = new JSONRPCRequest(address, port, req, new Callback(std::move(cb)), close_callback); if (!r->m_valid) { constexpr char err[] = "internal error"; - close_cb(err, sizeof(err) - 1); + (*close_callback)(err, sizeof(err) - 1); delete r; } }