Tcl Source Code

View Ticket
Login
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: