Ticket UUID: | 690354 | |||
Title: | Fix for bug #219293 (and #219155) | |||
Type: | Patch | Version: | None | |
Submitter: | patthoyts | Created on: | 2003-02-20 22:44:27 | |
Subsystem: | 28. dde Package | Assigned To: | patthoyts | |
Priority: | 5 Medium | Severity: | ||
Status: | Closed | Last Modified: | 2003-05-17 06:59:12 | |
Resolution: | Accepted | Closed By: | patthoyts | |
Closed on: | 2003-05-16 23:59:12 | |||
Description: |
This is a fix for bug #219293. | |||
User Comments: |
patthoyts added on 2003-05-17 06:59:11:
Logged In: YES user_id=202636 TIP #130 passed. Patch applied patthoyts added on 2003-03-11 20:59:16: File Added - 44725: tclWinDde.c.unique.patch Logged In: YES user_id=202636 Crap - attaching the patch file this time :) patthoyts added on 2003-03-11 20:58:09: Logged In: YES user_id=202636 I am uploading an enhanced version of the -unique patch for tclWinDde.c. This addresses concerns about locking the tcl application in the event of badly behaved windows applications. What I have done here is to factor out the implementation of dde services into a separate function DdeGetServicesList(interp, appname, topicname). This builds the services list and returns the list as the interp's result. Secondly I've reimplemented this function in terms of raw DDE calls using SendMessageTimeout. I have left the original code in for reference #ifdef'd out which also helps to bracket the collection of functions required to implement the new functionality. The new services function will ignore servers that are not processing messages. It also fixes bug #219155 as dde services {} $topic works as described. The new code is only accessed from the services command - and from the servername command unless -exact is specified. Following on from this in the future, I could see a case for reimplementing the remainder of the Dde package in raw dde and putting it onto a secondary thread. This would mean that tclsh using dde would be a 'well behaved' windows application - at least for dde. I do not know if it's sufficiently worth it though. Having all dde calls using SendMessageTimeout is a pretty significant plus though. patthoyts added on 2003-02-21 05:46:48: File Added - 43053: tclWinDde.c.unique.patch |
Attachments:
- tclWinDde.c.unique.patch [download] added by patthoyts on 2003-03-11 20:59:16. [details]