--- abiword-3.0.0/plugins/grammar/linkgrammarwrap/LinkGrammarWrap.cpp.orig 2013-04-07 08:53:03.000000000 -0500 +++ abiword-3.0.0/plugins/grammar/linkgrammarwrap/LinkGrammarWrap.cpp 2014-06-27 08:58:42.186089562 -0500 @@ -145,11 +145,11 @@ } AbiGrammarError * pWordMap = new AbiGrammarError(); pWordMap->m_iErrLow = iLow; - pWordMap->m_iErrHigh = iLow + strlen(sentence_get_nth_word(sent, i)); + pWordMap->m_iErrHigh = iLow + sentence_link_cost(sent, i); pWordMap->m_iWordNum = i; vecMapOfWords.addItem(pWordMap); bool bNew = false; - if(!sentence_nth_word_has_disjunction(sent, i)) + if(!sentence_disjunct_cost(sent, i)) { //UT_DEBUGMSG(("|%s| NULL LINK\n",sent->word[i].string)); if(pErr == NULL) @@ -167,7 +167,7 @@ } pErr = new AbiGrammarError(); } - iHigh = iLow + strlen(sentence_get_nth_word(sent, i)); + iHigh = iLow + sentence_link_cost(sent, i); pErr->m_iErrLow = iLow + iOff -1; pErr->m_iErrHigh = iHigh + iOff -1; if(pErr->m_iErrLow < 0) @@ -188,7 +188,7 @@ // // Expand the sqiggle // - iHigh = iLow + strlen(sentence_get_nth_word(sent, i)) + iOff; + iHigh = iLow + sentence_link_cost(sent, i) + iOff; pErr->m_iErrHigh = iHigh; if(pErr->m_iErrHigh < totlen-1) { @@ -197,7 +197,7 @@ pErr->m_iWordNum = i; } } - iLow += strlen(sentence_get_nth_word(sent, i)); + iLow += sentence_link_cost(sent, i); } // // No NULL links but still an error , mark the whole sentence bad.