Ticket UUID: | 461322 | |||
Title: | regsub trashes encoding? | |||
Type: | Bug | Version: | obsolete: 8.4a3 | |
Submitter: | chris_nelson | Created on: | 2001-09-13 20:15:20 | |
Subsystem: | 43. Regexp | Assigned To: | hobbs | |
Priority: | 7 High | Severity: | ||
Status: | Closed | Last Modified: | 2001-09-14 06:46:45 | |
Resolution: | Fixed | Closed By: | hobbs | |
Closed on: | 2001-09-13 23:46:45 | |||
Description: |
On at least Solaris 2.8, a fairly simple, stupid use of [regsub] produces corrupt output. It may be that it uses some weird encoding. It seems to be necessary that the expression and the substitute string are the same. It seems very sensitive to order of operations that preceed it. I'm fairly confident it has to do with object representation. The following script: set pti(a) abcdefghijklmnopqurstuvwxyz set b $pti(a) set pti(c) abcdefghijklmnopqurstuvwxyz0123456789 puts "replace \n\t$pti(a)\nwith\n\t$b\nin\n\t$pti(c)" puts "string length:[string length $pti(c)]" puts "string byte length:[string bytelength $pti(c)]" regsub $pti(a) $pti(c) $b d puts "result:\n\t$d" puts "string length:[string length $d]" puts "string byte length:[string bytelength $d]" Produces the following erroneous output: replace abcdefghijklmnopqurstuvwxyz with abcdefghijklmnopqurstuvwxyz in abcdefghijklmnopqurstuvwxyz0123456789 string length:37 string byte length:37 result: ab?efijklmnopqurstuvwxyz0123456789 string length:37 string byte length:41 At times during my quest to build a nice test case, I got 3-5 ?'s at the start of the string and bytelengths up to 45. NOTE: If set pti(a) abcdefghijklmnopqurstuvwxyz set b $pti(a) is replaced by: set pti(a) abcdefghijklmnopqurstuvwxyz set b abcdefghijklmnopqurstuvwxyz the problem does not seem to occur! | |||
User Comments: |
hobbs added on 2001-09-14 06:46:45:
File Added - 10758: 461322.patch Logged In: YES user_id=72656 This is an insidious problem related to shimmering where some commands that get passed the same object will need to duplicate the object to ensure correctness. This may occur in other areas, but the patch for regsub is attached. Fixed in 8.4a4cvs. andreas_kupries added on 2001-09-14 03:25:11: Logged In: YES user_id=75003 I remember that Jeff fixed recently a bug in this area. Assigning this to him. Priority up as eye-catcher. msofer added on 2001-09-14 03:24:19: Logged In: YES user_id=148712 Problem confirmed in linux with tcl8.4a3 and tcl8.4a4; does not seem to happen on tcl8.3.3 |
Attachments:
- 461322.patch [download] added by hobbs on 2001-09-14 06:46:45. [details]