Index: generic/tkText.c ================================================================== --- generic/tkText.c +++ generic/tkText.c @@ -1489,10 +1489,11 @@ if (result == TCL_OK) { /* * Move the insertion position to the correct place. */ + indexFromPtr = TkTextGetIndexFromObj(interp, textPtr, objv[2]); TkTextIndexForwChars(NULL, indexFromPtr, deleteInsertOffset, &index, COUNT_INDICES); TkBTreeUnlinkSegment(textPtr->insertMarkPtr, textPtr->insertMarkPtr->body.mark.linePtr); TkBTreeLinkSegment(textPtr->insertMarkPtr, &index); Index: tests/text.test ================================================================== --- tests/text.test +++ tests/text.test @@ -1572,10 +1572,20 @@ test text-8.26 {TextWidgetCmd procedure, "replace" option crash} -setup { text .tt } -body { .tt insert 0.0 foo\n .tt replace end-1l end bar +} -cleanup { + destroy .tt +} -result {} +test text-8.27 {TextWidgetCmd procedure, "replace" option crash} -setup { + text .tt +} -body { + .tt insert 0.0 \na + for {set i 0} {$i < 2} {incr i} { + .tt replace 2.0 3.0 b + } } -cleanup { destroy .tt } -result {}