Browse Source

back() and front() have defined behaviour now when queue is empty

ENGINE-781
Volker Birk 5 years ago
parent
commit
e658bbaf0e
  1. 8
      Adapter.cc
  2. 8
      locked_queue.hh

8
Adapter.cc

@ -147,7 +147,13 @@ namespace pEp {
bool in_shutdown() bool in_shutdown()
{ {
SYNC_EVENT ev = q.back(); SYNC_EVENT ev;
try {
ev = q.back();
}
catch (std::underflow_error&) {
return false;
}
if (ev) if (ev)
return false; return false;
else else

8
locked_queue.hh

@ -38,17 +38,21 @@ namespace utility
_q.clear(); _q.clear();
} }
// undefined behavior when queue empty // defined behavior when queue empty
T back() T back()
{ {
Lock lg(_mtx); Lock lg(_mtx);
if (_q.empty())
throw std::underflow_error("queue empty");
return _q.back(); return _q.back();
} }
// undefined behavior when queue empty // defined behavior when queue empty
T front() T front()
{ {
Lock lg(_mtx); Lock lg(_mtx);
if (_q.empty())
throw std::underflow_error("queue empty");
return _q.front(); return _q.front();
} }

Loading…
Cancel
Save