Tcl Source Code

View Ticket
Login
Ticket UUID: 940281
Title: Tcl_FSJoinPath not as documented
Type: Bug Version: obsolete: 8.5a2
Submitter: dgp Created on: 2004-04-22 20:04:58
Subsystem: 37. File System Assigned To: vincentdarley
Priority: 5 Medium Severity:
Status: Closed Last Modified: 2004-04-23 18:56:01
Resolution: Fixed Closed By: vincentdarley
    Closed on: 2004-04-23 11:56:01
Description:
Docs claim that Tcl_FSJoinPath returns
a (Tcl_Obj *) -- the joined path.  However,
it sometimes returns NULL instead.

Notably, it returns NULL if an invalid list
is passed in as the listObj argument.
That makes some sense, though a
Tcl_Panic() might be just a suitable.
The caller is simply broken.  Either
way that should be documented.

The more serious problem is when
listObj is a valid list, but a value of
0 is passed as the elements argument.
Then NULL is returned instead of an
empty string path.  This  breaks
simple uses like:

 elements = Tcl_FSSplitPath(path, &count);
 Tcl_IncrRefCount(elements);
 parent = Tcl_FSJoinPath(elements, count -1);
 Tcl_IncrRefCount(parent);       /* possible CRASH! */
 Tcl_ListObjIndex(NULL, elements, count - 1, &tail);
 Tcl_IncrRefCount(tail);
 Tcl_DecrRefCount(elements);
User Comments: vincentdarley added on 2004-04-23 18:56:01:
Logged In: YES 
user_id=32170

Thank you.  Will commit fix asap.

dgp added on 2004-04-23 03:30:23:

File Added - 84717: 940281.patch

Logged In: YES 
user_id=80530

 Here's a possible patch to try.
Causes no harm to the test
suite here.

Attachments: