SVN commit 967673 by coates: Fixed a Q_ASSERT based crashed in the Grandfather's Clock solver. The translate_layout() method asserted that each of the 12 target piles always contain at least one pile. Unfortunately, if it takes an especially long time to render the card graphics at the start of a new game the 250ms solver restart timer can time out and this method can be called before the intitial deal has even happened. The proper fix would be to ensure that the solver is never started before the cards have actually been dealt, but I saw no way of cleanly implementing that. M +6 -2 clock.cpp --- trunk/KDE/kdegames/kpat/patsolve/clock.cpp #967672:967673 @@ -258,9 +258,13 @@ for (int i = 0; i < 12; i++) { Card *c = deal->target[i]->top(); - Q_ASSERT( c ); - W[8][i] = translateSuit( c->suit() ) + c->rank(); + // It is not safe to assume that each target pile will always have a + // card on it. If it takes particularly long to render the card graphics + // at the start of a new game, it is possible that this method can be + // called before the initial deal has been completed. + if (c) + W[8][i] = translateSuit( c->suit() ) + c->rank(); } Wp[8] = &W[8][11]; Wlen[8] = 12;