Tcl Source Code

Check-in [27ec7e3d3d]
Login
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2019 Conference, Houston/TX, US, Nov 4-8
Send your abstracts to [email protected]
or submit via the online form by Sep 9.

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:DeleteArray has only one caller. It is called on the "dummy" variable that is created during unset, and which cannot be reached by resolving any name. It cannot have VAR_SEARCH_ACTIVE set because the sole thing that sets that flag is an [array startsearch] applied to a named variable.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | core-8-6-branch
Files: files | file ages | folders
SHA3-256: 27ec7e3d3d30734684c6ec31edb86093d31491e660c5e0060991050da856ee0c
User & Date: dgp 2018-04-20 20:17:17
Context
2018-04-22
13:22
[46a2410650] compiled [unset] was bypassing cleanup of active array search. Overdue thanks to Andy G... check-in: 244c0b893d user: dgp tags: core-8-6-branch
2018-04-21
13:47
merge 8.6 check-in: 5de2ce4b96 user: kjnash tags: bug-46b6edad51-concurrent-http
2018-04-20
20:41
bug [552ed5eac53ff5e4]: added test case illustrated this bug check-in: 1283a17cbd user: sebres tags: bug-552ed5eac53ff5e4
20:17
DeleteArray has only one caller. It is called on the "dummy" variable that is created during unset, ... check-in: 27ec7e3d3d user: dgp tags: core-8-6-branch
2018-04-19
22:29
Slightly improved (more fail-safe) surrogate handling for TCL_UTF_MAX>3. Backported from latest TIP ... check-in: 686259e650 user: jan.nijtmans tags: core-8-6-branch
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to generic/tclVar.c.

5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
    Tcl_HashSearch search;
    Tcl_HashEntry *tPtr;
    register Var *elPtr;
    ActiveVarTrace *activePtr;
    Tcl_Obj *objPtr;
    VarTrace *tracePtr;

    if (varPtr->flags & VAR_SEARCH_ACTIVE) {
	DeleteSearches(iPtr, varPtr);
    }
    for (elPtr = VarHashFirstVar(varPtr->value.tablePtr, &search);
	    elPtr != NULL; elPtr = VarHashNextVar(&search)) {
	if (TclIsVarScalar(elPtr) && (elPtr->value.objPtr != NULL)) {
	    objPtr = elPtr->value.objPtr;
	    TclDecrRefCount(objPtr);
	    elPtr->value.objPtr = NULL;
	}






<
<
<







5320
5321
5322
5323
5324
5325
5326



5327
5328
5329
5330
5331
5332
5333
    Tcl_HashSearch search;
    Tcl_HashEntry *tPtr;
    register Var *elPtr;
    ActiveVarTrace *activePtr;
    Tcl_Obj *objPtr;
    VarTrace *tracePtr;




    for (elPtr = VarHashFirstVar(varPtr->value.tablePtr, &search);
	    elPtr != NULL; elPtr = VarHashNextVar(&search)) {
	if (TclIsVarScalar(elPtr) && (elPtr->value.objPtr != NULL)) {
	    objPtr = elPtr->value.objPtr;
	    TclDecrRefCount(objPtr);
	    elPtr->value.objPtr = NULL;
	}