From 60df7b2d3b73900481814084be027375b5888765 Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Tue, 13 Oct 2015 20:36:36 +0300 Subject: [PATCH] Fix infinite loop if god cannot fix your trouble For example, if safe_teleds cannot land you in a safe spot, because level is full of monsters. --- src/pray.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/pray.c b/src/pray.c index b4aa9c2c0..deb046bc4 100644 --- a/src/pray.c +++ b/src/pray.c @@ -904,6 +904,7 @@ aligntyp g_align; pat_on_head = 1; } else { int action, prayer_luck; + int tryct = 0; /* Negative luck is normally impossible here (can_pray() forces prayer failure in that situation), but it's possible for @@ -936,7 +937,8 @@ aligntyp g_align; case 3: fix_worst_trouble(trouble); case 2: - while ((trouble = in_trouble()) > 0) + /* arbitrary number of tries */ + while ((trouble = in_trouble()) > 0 && (++tryct < 10)) fix_worst_trouble(trouble); break;