Skip to content

Commit c70ac2e

Browse files
committed
Add try/catch block around message queue recive method in the engine
1 parent 937e306 commit c70ac2e

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

src/vizdoom/src/viz_message_queue.cpp

+11-4
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,19 @@ void VIZ_MQSend(uint8_t code, const char * command){
6868
}
6969

7070
void VIZ_MQReceive(void *msg) {
71-
size_t size;
72-
unsigned int priority;
71+
if(vizMQDoom) {
72+
size_t size;
73+
unsigned int priority;
7374

74-
if(vizMQDoom) vizMQDoom->receive(msg, sizeof(VIZMessage), size, priority);
75+
try{
76+
vizMQDoom->receive(msg, sizeof(VIZMessage), size, priority);
77+
}
78+
catch(...){ // bip::interprocess_exception
79+
VIZ_Error(VIZ_FUNC, "Failed to receive message.");
80+
}
7581

76-
VIZ_DebugMsg(4, VIZ_FUNC, "Received msg: %d.", static_cast<VIZMessage *>(msg)->code);
82+
VIZ_DebugMsg(4, VIZ_FUNC, "Received msg: %d.", static_cast<VIZMessage *>(msg)->code);
83+
}
7784
}
7885

7986
bool VIZ_MQTryReceive(void *msg){

0 commit comments

Comments
 (0)