diff --git a/include/crow/routing.h b/include/crow/routing.h index 279753060..18bd7cf2b 100644 --- a/include/crow/routing.h +++ b/include/crow/routing.h @@ -1710,7 +1710,7 @@ namespace crow // NOTE: Already documented in "crow/app.h" try { - auto& rule = rules[rule_index]; + BaseRule& rule = *rules[rule_index]; handle_rule(rule, req, res, found.r_params); } catch (...) @@ -1723,13 +1723,13 @@ namespace crow // NOTE: Already documented in "crow/app.h" template typename std::enable_if::value != 0, void>::type - handle_rule(BaseRule* rule, crow::request& req, crow::response& res, const crow::routing_params& rp) + handle_rule(BaseRule& rule, crow::request& req, crow::response& res, const crow::routing_params& rp) { - if (!rule->mw_indices_.empty()) + if (!rule.mw_indices_.empty()) { auto& ctx = *reinterpret_cast(req.middleware_context); auto& container = *reinterpret_cast(req.middleware_container); - detail::middleware_call_criteria_dynamic crit_fwd(rule->mw_indices_.indices()); + detail::middleware_call_criteria_dynamic crit_fwd(rule.mw_indices_.indices()); auto glob_completion_handler = std::move(res.complete_request_handler_); res.complete_request_handler_ = [] {}; @@ -1744,7 +1744,7 @@ namespace crow // NOTE: Already documented in "crow/app.h" } res.complete_request_handler_ = [&rule, &ctx, &container, &req, &res, glob_completion_handler] { - detail::middleware_call_criteria_dynamic crit_bwd(rule->mw_indices_.indices()); + detail::middleware_call_criteria_dynamic crit_bwd(rule.mw_indices_.indices()); detail::after_handlers_call_helper< decltype(crit_bwd), @@ -1754,14 +1754,14 @@ namespace crow // NOTE: Already documented in "crow/app.h" glob_completion_handler(); }; } - rule->handle(req, res, rp); + rule.handle(req, res, rp); } template typename std::enable_if::value == 0, void>::type - handle_rule(BaseRule* rule, crow::request& req, crow::response& res, const crow::routing_params& rp) + handle_rule(BaseRule& rule, crow::request& req, crow::response& res, const crow::routing_params& rp) { - rule->handle(req, res, rp); + rule.handle(req, res, rp); } void debug_print()