Ticket UUID: | 727786 | |||
Title: | JANITORIAL: dead/DEPRECATED code in tclUnixChan.c | |||
Type: | Patch | Version: | None | |
Submitter: | jenglish | Created on: | 2003-04-25 22:17:41 | |
Subsystem: | 25. Channel System | Assigned To: | andreas_kupries | |
Priority: | 3 Low | Severity: | ||
Status: | Closed | Last Modified: | 2004-11-11 03:04:57 | |
Resolution: | Accepted | Closed By: | andreas_kupries | |
Closed on: | 2004-11-10 20:04:57 | |||
Description: |
The attached patch simply removes the code currently #ifdef'ed out in tclUnixChan.c. (See followup for explanation). | |||
User Comments: |
andreas_kupries added on 2004-11-11 03:04:57:
File Added - 108346: 727786.tar.gz Logged In: YES user_id=75003 Committed to head. Added mail discussion between Joe, Jacob, and myself. andreas_kupries added on 2004-10-29 03:23:28: File Added - 106861: 727786.patch andreas_kupries added on 2004-10-29 03:23:27: Logged In: YES user_id=75003 Uploading updated patch. jenglish added on 2003-11-25 09:13:01: File Added - 68595: tcl-unixchan-tls.patch Logged In: YES user_id=68433 Old patch has gone stale; uploading new one. Is there any reason to keep this code around? It's unused, and it's very likely incorrect. jenglish added on 2003-04-26 05:20:27: Logged In: YES user_id=68433 History: Starting with Tcl 7.6, calling Tcl_MakeFileChannel() with the same inFd and outFd as a previously allocated FileChannel would return the old FileChannel instead of allocating a new one. It's not clear why this was done -- this behaviour was not documented -- but possibly related to the following changelog entry: 5/23/96 (bug fix) Fixed bug that allowed Tcl_MakeFileChannel to create new channels with Tcl_Files in them that are already used by another channel. This would cause core dumps when the Tcl_Files were being freed twice. (JL) At some point between 7.6 and 8.0, the Tcl_MakeFileChannel() API was reworked: 4/23/97 (removed feature) The Tcl_File interfaces have been removed. The Tcl_CreateFileHandler/Tcl_DeleteFileHandler interfaces now take Unix fd's and are only supported on the Unix platform. Tcl_GetChannelFile has been replaced with Tcl_GetChannelHandle. Tcl_MakeFileChannel now takes a platform specific file handle. (SS) *** POTENTIAL INCOMPATIBILITY *** Tcl 8.0 also kept track of a global list of open file channels, and returned an existing channel if a call to Tcl_MakeFileChannel() specified a previously used file descriptor. This behaviour was not documented in 8.0 either. The list of open file channels was not used for any other purpose. In Tcl 8.1, the global list of file channels was replaced with a thread-specific list (CVS revision 1.10, r1.1.2.1). The caching behaviour was still not documented. Shortly after Tcl 8.3.2, the per-thread list of file descriptors was (temporarily) #ifdef'ed out, since it caused problems with transferring channels. From the CVS log: revision 1.18 date: 2000/05/02 22:02:37; author: kupries; state: Exp; lines: +24 -4 * unix/tclUnixChan.c: #ifdef'd the thread-local list of file channels as it prevents us from transfering channels. To restore this we may need an extended interface to drivers in the future. Target: 9.0. Found while testing the new transfer of channels. The information in this list for a channel was left behind and then crashed the system during finalization. The code has remained #ifdef'ed out since then, although a patch has since been applied to make it work properly if -DDEPRECATED is supplied; see ChangeLog entry 2003-01-25 Mo DeJong <[email protected]>. * * * SUMMARY: since this part of the code (a) is only used to implement an undocumented and quite-possibly incorrect feature, and (b) has been disabled throughout the 8.4 series without any noticeable ill effect, I believe it can be safely removed. jenglish added on 2003-04-26 05:17:41: File Added - 48762: tcl-unixchan-tls.patch |