tk/Fix-de01e24aa1-Text-replace-command-involving-select.patch
2019-09-30 11:18:32 -04:00

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