Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Merge nab-deleterange-elide: make deletions and undo/redo across elided region boundaries reliable. DeleteRange handles all switch topologies of a deletion range (separate savedLinkPtr/savedBranchPtr, merge of regions becoming adjacent, canonicalization of regions adjacent to the range, counter transfer at line joins, byte-position anchor for the surrogate newline); UndoDeletePerform restores switches with correct sections, counters and mark ordering in multiline tokens, releases the token references (leak), and keeps dead switches out of foreign token chains; delete undo tokens holding switches are not joined anymore; 'edit reset' and ClearText dispose of the retained tag/mark undo tokens; a full undo stack evicts its oldest atom instead of retaining stale ones; TkRangeListDelete/Add/Contains repairs. With regression tests btree-14.12 - btree-14.39, text-27.32/33/35/36, textDisp-38.1 - 38.3. |
|---|---|
| Downloads: | See separate download page |
| Timelines: | family | ancestors | descendants | both | revised_text | tip-466 |
| Files: | files | file ages | folders |
| SHA3-256: |
182404a7a268f0949ea8989125147b03 |
| User & Date: | nab 2026-07-15 10:19:49.629 |
Context
|
2026-07-15
| ||
| 17:26 | Merge nab-reliquats: harden elision, tag and section handling against the remaining corruption classes. Undo/redo of deletions now reconciles the elide topology of the restored range with the current tag information (UpdateElideInfo gets a recompute mode; covers tags excluded from undo and elide states reconfigured between deletion and undo); insertion of non-elided text inside an elided range splits the range (meeting point of two elide tags); switches enrolled in undo tokens survive the annihilation of their counterpart (annihilation marker, stash references, drop at restore); the index arithmetic of joined delete undo tokens handles line-crossing chunks and refuses mark-based joins it cannot compute; the section producers no longer leave short sections at arbitrary cuts (RebuildSections giveback, SplitSection walk-back, BalanceSectionWithLeft, rebalancing after boundary mark removal); [pathName clear] works on peers; tag clearing repairs its range search beyond the boundary line, its undo change list anchoring, its line cache references, partial clears of elided ranges, and re-merges interior chunk boundaries at undo; the branch search examines the first line of a node; TkBTreeTag sets up its undo information before the elision update frees merged segments. With regression tests btree-14.40 - 14.83, text-27.37 - 27.43, text-42.1/42.2. check-in: 22f07785 user: nab tags: revised_text, tip-466 | |
| 10:48 | Fix crash of [pathName clear] on a text widget with peers: the peer loop of ClearText called TkTextFreeAllTags once per peer, but the tags are shared (and the freed tags stay in the hash table), so every tag was freed multiple times; only the release of the peer's current tag info belongs into the loop, the tags are now freed once, before the tag table is deleted (mirrors DestroyText). The loop also reset dInfoPtr/dontRepick/lastLineY of the invoking widget instead of the iterated peer, leaving the freed dInfoPtr of the other peers in place (crash in TkTextFreeDInfo on the second iteration). With regression tests text-42.1/42.2. check-in: 266b16df user: nab tags: nab-reliquats | |
| 10:19 | Merge nab-deleterange-elide: make deletions and undo/redo across elided region boundaries reliable. DeleteRange handles all switch topologies of a deletion range (separate savedLinkPtr/savedBranchPtr, merge of regions becoming adjacent, canonicalization of regions adjacent to the range, counter transfer at line joins, byte-position anchor for the surrogate newline); UndoDeletePerform restores switches with correct sections, counters and mark ordering in multiline tokens, releases the token references (leak), and keeps dead switches out of foreign token chains; delete undo tokens holding switches are not joined anymore; 'edit reset' and ClearText dispose of the retained tag/mark undo tokens; a full undo stack evicts its oldest atom instead of retaining stale ones; TkRangeListDelete/Add/Contains repairs. With regression tests btree-14.12 - btree-14.39, text-27.32/33/35/36, textDisp-38.1 - 38.3. check-in: 182404a7 user: nab tags: revised_text, tip-466 | |
| 10:16 | Merge revised_text: trunk merges, nab-tabs-wrap-none, and the five adversarial hardening fixes (nab-integration). The regression tests btree-14.8 - btree-14.35 of this branch move to btree-14.12 - btree-14.39, the merged nab-integration tests own btree-14.8 - btree-14.11. closed check-in: d303deae user: nab tags: nab-deleterange-elide | |
| 10:02 | Merge nab-integration: five fixes from the adversarial hardening campaign - numeric tabs with -wrap none, widget -locale relayout, [checksum -displaytext] eliding, load/ClearText tag rootPtr reset, and UpdateElideInfo branch reuse + protectionFlag clearing. With regression tests. check-in: 45ee0da4 user: nab tags: revised_text, tip-466 | |
Changes
Changes to generic/tkRangeList.c.
Changes to generic/tkRangeListPriv.h.
Changes to generic/tkText.c.
Changes to generic/tkTextBTree.c.
Changes to generic/tkTextImage.c.
Changes to generic/tkTextTag.c.
Changes to generic/tkTextUndo.c.
Changes to generic/tkTextWind.c.
Changes to tests/text.test.
Changes to tests/textBTree.test.
Changes to tests/textDisp.test.
