Hi All
I get the error "list iterator not dereferencable" when using the following code:
bool done = false;
while (!_list_of_messages.empty() && !done) {
// request the next message to create a frame
// DEBUG ERROR WHEN NEXT LINE IS EXECUTED:
Counted_message_reader reader = *(_list_of_messages.begin());
if (reader.has_more_data()) {
_list_of_frames.push_back(new Dlp_data_frame(reader, _send_compressed_frames));
done = true;
} else {
_list_of_messages.pop_front();
}
}
(The line beginning with "Counted_message_reader..." is the one giving the problem)
Note that the error doesn't always occur but seemingly at random times (usually when there's lots of buffered data).
_list_of_messages
is declared as follows:
std::list<Counted_message_reader> _list_of_messages;
In the surrounding code we could do pop_front
, push_front
and size
, empty
or end
checks on _list_of_messages
but no erase
calls.
I've studied the STL documentation and can't see any glaring problems. Is there something wrong with the above code or do I have a memory leak somewhere?
Thanks! Appreciated!