Bonjour

Je galère pas mal avec cette erreur : string iterator not dereferencable. Des que j'envoie une string un peu trop longue je tombe sur cette assertion.
Vu mon niveau en C++, je ne comprends pas trop comment faire pour l'éviter.

Je suis parti du tutorial. Pour provoquer l'erreur il suffit d'envoyer un message depuis le serveur avec une string un peu longue.

Dans le code du serveur, changer la fonction chat_session::handle_read

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
void chat_session::handle_read(const boost::system::error_code &error)
{
	chat_room_ptr room = m_room.lock();
	if (room)
	{
		if (!error)
		{
			// On demande à la room de transmettre le message à tout le monde
			room->deliver(m_message);
 
			chat_message e;
			e.m_type = chat_message::NEW_MSG;
			e.m_message = "Message bien reçu mais ca va planter gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg?";
			deliver(e);
 
			// On relance une écoute
			wait_for_data();
		}
		else
		{
			if (!is_leaving)
			{
				is_leaving = true;
				room->leave(shared_from_this() );
			}
		}
	}
}
Les clients reçoivent bien le message mais le serveur plante sur l'exception.

Quelqu'un sait ce qu'il se passe réellement ?
Comment faire pour le résoudre ?

Merci d'avance