Ticket UUID: | 984407 | |||
Title: | Hang in ctext with regexp match | |||
Type: | Bug | Version: | None | |
Submitter: | tallniel | Created on: | 2004-07-03 00:11:32 | |
Subsystem: | tklib :: ctext | Assigned To: | aku | |
Priority: | 5 Medium | Severity: | Minor | |
Status: | Closed | Last Modified: | 2022-05-10 12:30:58 | |
Resolution: | Out of Date | Closed By: | aku | |
Closed on: | 2022-05-10 12:30:58 | |||
Description: |
Just been playing with ctext and I ran into a bug which causes an endless loop on my system. The problem came from trying to highlight Tcl comments, using: ctext::addHighlightClassForRegexp $win comment navy {#[^\n]*\n} Then if I add the following to the text widget: This is a test # This is a test foo Then position the cursor somewhere in the comment, and press backspace - endless loop occurs in ctext::highlight - the third while 1 loop. Problem seems to be that the [$win search..] stuff is passed indices like 4.0 3.15 (i.e. start is after end), and it return 3.0 bizarrely (this may be a bug in the text widget, or possibly in the Mac OS X implementation - I haven't followed up yet). The fix was to add these lines after the {"" == $res} check: # If result given is less than the start index (can happen), then # break out foreach {l1 c1} [split $res .] {l2 c2} [split $si .] { break } if {$l1 < $l2 || ($l1 == $l2 && $c1 < $c2)} { break } Everything seems to work again after adding that in. I would upload a patch, but I'm very busy at present. Hassle me by email if you really really want a patch! | |||
User Comments: |
aku added on 2022-05-10 12:30:58:
Unable to reproduce with 8.5.14, 8.6.10, 8.7a6. georgeps added on 2004-07-06 06:13:38: Logged In: YES user_id=585068 This failure only occurs with Tk 8.5/HEAD. I can't duplicate it with 8.4.6. With 8.4.6 this *does not* work: ctext::addHighlightClassForRegexp .ct comment navy {#[^\n]*\n} That same RE works properly in 8.5/HEAD. This RE always seems to work (and interestingly seems to avoid the endless loop with 8.5): ctext::addHighlightClassForRegexp .ct comment khaki {#[^\n\r]*} Time to file a bug for Tk I think. |