commit 4198bd0e2eb7ce81972a27feea2ad518b8ea39da from: rsc date: Tue May 08 02:52:21 2007 UTC fix random troff crash (Noel Hunt) commit - e17c64a7cd5162ee586f4b1bdd797f64381859d9 commit + 4198bd0e2eb7ce81972a27feea2ad518b8ea39da blob - b2ab175b3516ceeed9377659266b326f5bc2b26e blob + 9ff2ebce8b2e28b33709d565f77fdb2e4f7c2c17 --- src/cmd/troff/n8.c +++ src/cmd/troff/n8.c @@ -400,7 +400,7 @@ static int texit(Tchar *start, Tchar *end) /* hyphenat for (i = 0; i <= nw; i++) cnt[i] = '0'; - for (wp = w; wp < w + nw; wp++) { + for (wp = w; wp+1 < w+nw; wp++) { for (pp = trie[trieindex(*wp, *(wp+1))]; pp < nextpat; ) { if (pp == 0 /* no trie entry */ || *pp != *wp /* no match on 1st letter */ @@ -537,5 +537,9 @@ static void fixup(void) /* build indexes of where . a static int trieindex(int d1, int d2) { - return 27 * (d1 == '.' ? 0 : d1 - 'a' + 1) + (d2 == '.' ? 0 : d2 - 'a' + 1); + int z; + + z = 27 * (d1 == '.' ? 0 : d1 - 'a' + 1) + (d2 == '.' ? 0 : d2 - 'a' + 1); + assert(z >= 0 && z < 27*27); + return z; }