51 lines
1.7 KiB
Diff
51 lines
1.7 KiB
Diff
From 4eec31fbb436bb39ad1be0ac1d4f6b5804bca4e1 Mon Sep 17 00:00:00 2001
|
|
From: fvogel <fvogelnew1@free.fr>
|
|
Date: Wed, 13 Jun 2018 20:27:21 +0000
|
|
Subject: [PATCH 232/693] Fix [de01e24aa1]: Text replace command involving
|
|
selection crashes
|
|
|
|
---
|
|
generic/tkText.c | 12 +++++++++---
|
|
1 file changed, 9 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/generic/tkText.c b/generic/tkText.c
|
|
index 308855f13..78260e08c 100644
|
|
--- a/generic/tkText.c
|
|
+++ b/generic/tkText.c
|
|
@@ -1465,7 +1465,7 @@ TextWidgetObjCmd(
|
|
* unnecessarily.
|
|
*/
|
|
|
|
- int deleteInsertOffset, insertLength, j;
|
|
+ int deleteInsertOffset, insertLength, j, indexFromLine, indexFromByteOffset;
|
|
|
|
insertLength = 0;
|
|
for (j = 4; j < objc; j += 2) {
|
|
@@ -1483,6 +1483,9 @@ TextWidgetObjCmd(
|
|
deleteInsertOffset = insertLength;
|
|
}
|
|
|
|
+ indexFromLine = TkBTreeLinesTo(textPtr, indexFromPtr->linePtr);
|
|
+ indexFromByteOffset = indexFromPtr->byteIndex;
|
|
+
|
|
result = TextReplaceCmd(textPtr, interp, indexFromPtr,
|
|
indexToPtr, objc, objv, 0);
|
|
|
|
@@ -1491,8 +1494,11 @@ TextWidgetObjCmd(
|
|
* Move the insertion position to the correct place.
|
|
*/
|
|
|
|
- indexFromPtr = TkTextGetIndexFromObj(interp, textPtr, objv[2]);
|
|
- TkTextIndexForwChars(NULL, indexFromPtr,
|
|
+ TkTextIndex indexTmp;
|
|
+
|
|
+ TkTextMakeByteIndex(textPtr->sharedTextPtr->tree, textPtr, indexFromLine,
|
|
+ indexFromByteOffset, &indexTmp);
|
|
+ TkTextIndexForwChars(NULL, &indexTmp,
|
|
deleteInsertOffset, &index, COUNT_INDICES);
|
|
TkBTreeUnlinkSegment(textPtr->insertMarkPtr,
|
|
textPtr->insertMarkPtr->body.mark.linePtr);
|
|
--
|
|
2.19.1
|
|
|