From 5e573f9480671bd515ceb3c3c9500f5895d0a5b5 Mon Sep 17 00:00:00 2001 From: Kautenja Date: Sun, 16 Feb 2020 17:10:48 -0600 Subject: [PATCH] fix to return if a limit order is entirely filled --- include/limit_order_book.hpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/include/limit_order_book.hpp b/include/limit_order_book.hpp index 27f75d5..bd0a7eb 100644 --- a/include/limit_order_book.hpp +++ b/include/limit_order_book.hpp @@ -48,8 +48,10 @@ class LimitOrderBook { if (buys.best != nullptr && price <= buys.best->key) { // crosses // place a market order with the limit price buys.market(&orders.at(order_id), [&](UID uid) { orders.erase(uid); }); - if (orders.at(order_id).size == 0) // order filled + if (orders.at(order_id).size == 0) { // order filled orders.erase(order_id); + return; + } } sells.limit(&orders.at(order_id)); } @@ -68,8 +70,10 @@ class LimitOrderBook { if (sells.best != nullptr && price >= sells.best->key) { // crosses // place a market order with the limit price sells.market(&orders.at(order_id), [&](UID uid) { orders.erase(uid); }); - if (orders.at(order_id).size == 0) // order filled + if (orders.at(order_id).size == 0) { // order filled orders.erase(order_id); + return; + } } buys.limit(&orders.at(order_id)); }