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
Les clients reçoivent bien le message mais le serveur plante sur l'exception.
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() ); } } } }
Quelqu'un sait ce qu'il se passe réellement ?
Comment faire pour le résoudre ?
Merci d'avance
Partager