Tcl Source Code

View Ticket
Login
Ticket UUID: 953284
Title: normalized path cache gets outdated
Type: Bug Version: obsolete: 8.5a2
Submitter: dgp Created on: 2004-05-13 13:46:42
Subsystem: 37. File System Assigned To: aku
Priority: 5 Medium Severity: Minor
Status: Open Last Modified: 2016-07-08 08:21:51
Resolution: None Closed By: nobody
    Closed on:
Description:
This test demos the problem.
Filesystem paths violate 
"everything is a string"
Patch attached.

test filesystem-1.42 {file normalisation: outdated
cache} -setup {
    set w [makeDirectory wrong]
    makeFile wrong file $w
    set r [makeDirectory right]
    makeFile right file $r
    set link [file join [file dirname $w] link]
    file link $link wrong
} -body {
    set p1 [file join $link file]       ;# $p1 and $p2
have same (string)
    set p2 [file join $link file]       ;# value
    file normalize $p1          ;# cache the "wrong"
normalized path

    file delete $link
    file link $link right       ;# change link reference

    # Because string values are the same, according to
Tcl value
    # rules, these operations should produce consistent
results.
    # They do not, because $p1 holds an outdated cached
normalized
    # path, breaking "everything is a string".
    set result {}
    lappend result $p1
    set f [open $p1]
    lappend result [read -nonewline $f]
    close $f
    lappend result [file normalize $p1]

    lappend result $p2
    set f [open $p2]
    lappend result [read -nonewline $f]
    close $f
    lappend result [file normalize $p2]

} -cleanup {
    file delete $link
    removeFile file $r
    removeDirectory right
    removeFile file $w
    removeDirectory wrong
} -match glob -result\
{*/link/file right */right/file */link/file right
*/right/file}
User Comments: apnadkarni added on 2016-07-08 08:21:51:
I don't know if this bug is still present as of 8.6.5 but as I noted for [a47641a031], imho file link should update the file system epoch just as mounting of file systems and changes to env do. That should flush the incorrect cached value.

dgp added on 2004-05-17 22:40:46:
Logged In: YES 
user_id=80530

Not yet.  Just wanted to
get the matter "on the record".

vincentdarley added on 2004-05-17 17:08:30:
Logged In: YES 
user_id=32170

Ugh.  This isn't nice.  Fixing it without removing all cache
usage will be quite difficult.  Any suggestions?

dgp added on 2004-05-13 20:46:42:

File Added - 87041: normcache.patch

Attachments: