Tcl Source Code

View Ticket
Login
Ticket UUID: 219226
Title: fail to do array search on env
Type: Bug Version: obsolete: 8.2.2
Submitter: nobody Created on: 2000-10-26 05:03:50
Subsystem: 08. Environment Variables Assigned To: dkf
Priority: 5 Medium Severity: Minor
Status: Closed Last Modified: 2013-11-20 11:57:41
Resolution: Fixed Closed By: jan.nijtmans
    Closed on: 2013-11-20 11:57:41
Description:
OriginalBugID: 4109 Bug
Version: 8.2.2
SubmitDate: '2000-02-01'
LastModified: '2000-04-26'
Severity: SER
Status: Assigned
Submitter: techsupp
ChangedBy: hobbs
RelatedBugIDs: 1999 3661
OS: All
FixedDate: '2000-10-25'
ClosedDate: '2000-10-25'


Name: eric chang

Comments:
Some commands work on Tcl8.0

ReproducibleScript:
array startsearch env   #will create ssearchid s-1-env
array nextelement env s-1-env

ObservedBehavior:
error message: couldn't find search "s-1-env"

DesiredBehavior:
suppose one array element



Verified on NT with 8.3b2. 
-- 02/01/2000 hobbs

When the mechanism for maintaining the env() array changed in 8.1, this broke:

2/18/98 (hidden feature change) The way the env() array is shared among
interpreters changed.  Updates to env used to trigger write traces in
other interpreters.  This undocumented feature is no longer implemented.
Instead, variable tracing is used to keep the C-level environ array in sync
with the Tcl-level env array. This required adding TCL_TRACE_ARRAY support
to Tcl_TraceVar2 so that array names works properly. (BW)
*** POTENTIAL INCOMPATIBILITY ***

The problem is that the trace on the env array that is used to do this actually unsets the env array, then resets it from the environ array.  When env() is unset, the searches get deleted.

- eric

-- 03/24/2000 ericm
User Comments: jan.nijtmans added on 2013-11-20 11:57:41:

This bug-fix [afaff33553] introduced a regression (test-cases init-5.0, package-15.4 on win32), which is fixed in [bac3f9b139] and [f6c1c6b491].


dkf added on 2013-09-27 10:34:08:

Side benefit: links to array elements now work sanely.


dkf added on 2013-09-27 10:33:33:

Packed dear old Crazy Aunt Beattie off to the nursing home in the sky.

New implementation lists the existing array contents, iterates over the environ elements adding/updating the env array as it goes and removing the elements from that list, then removes the elements from env that still remain in that list. More memory churn, but much more minimal changes.


das added on 2001-09-22 12:55:31:
Logged In: YES 
user_id=90580