Прежде всего, используйте более описательные имена переменных.Ваш код почти невозможно прочитать.Хотя я обнаружил, по крайней мере, одну проблему:
for (w = 0; w < TRows; )
{
if (Finish[w] == 0)
{
/* snip */
w++;
/* snip */
}
}
Если Finish[w]
(что бы это ни значило), в конечном итоге оказалось чем-то иным, чем 0
.w
никогда не будет увеличено, и вы получите бесконечный цикл.И если бы это всегда было 0
, вам не понадобился бы этот тест для начала.Что-то не так с вашей логикой здесь.