diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2016-02-08 15:51:40 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2016-02-08 15:51:40 (GMT) |
commit | 9425cf81e4e73cf2c80e940a811967e58abdc054 (patch) | |
tree | 215d70b3039a5a2ef35b0b821ac407d8fe874cc8 | |
parent | 4b766d1f24378289437bc45e7405f68a48053915 (diff) | |
parent | ecb4e238565152c913a65d2eb5d8ad782793b474 (diff) | |
download | tk-9425cf81e4e73cf2c80e940a811967e58abdc054.zip tk-9425cf81e4e73cf2c80e940a811967e58abdc054.tar.gz tk-9425cf81e4e73cf2c80e940a811967e58abdc054.tar.bz2 |
Fix [06c14339060ba9ae]: Text widget crash during delete. Thanks to François Vogel for the implementation and Brian Griffin for all his help getting this figured out.
-rw-r--r-- | generic/tkTextDisp.c | 8 | ||||
-rw-r--r-- | tests/textDisp.test | 3 |
2 files changed, 4 insertions, 7 deletions
diff --git a/generic/tkTextDisp.c b/generic/tkTextDisp.c index f2e760b..07623c4 100644 --- a/generic/tkTextDisp.c +++ b/generic/tkTextDisp.c @@ -4749,6 +4749,9 @@ TextChanged( */ lastPtr = FindDLine(textPtr, dInfoPtr->dLinePtr, &rounded); + while ((lastPtr != NULL) && (TkTextIndexCmp(&lastPtr->index, &rounded) < 0)) { + lastPtr = lastPtr->nextPtr; + } /* * At least one display line is supposed to change. This makes the @@ -4765,11 +4768,6 @@ TextChanged( } } - while ((lastPtr != NULL) - && (lastPtr->index.linePtr == index2Ptr->linePtr)) { - lastPtr = lastPtr->nextPtr; - } - /* * Delete all the DLines from firstPtr up to but not including lastPtr. */ diff --git a/tests/textDisp.test b/tests/textDisp.test index f5fbd3d..5ac2e7a 100644 --- a/tests/textDisp.test +++ b/tests/textDisp.test @@ -1191,8 +1191,7 @@ test textDisp-8.12 {TkTextChanged, moving the insert cursor redraws only past an # because during (b) findDLine cannot return the display line the # cursor is in since this display line was just unlinked in (a). } {{8.0 9.0} {8.0 12.0} {8.0 12.0} {3.0 8.0} {2.0 3.0}} - -test textDisp-8.13 {TkTextChanged, [06c1433906]} { +test textDisp-8.13 {TkTextChanged, used to crash, see [06c1433906]} { .t delete 1.0 end .t insert 1.0 \nLine1\nLine2\n update |