diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2012-07-10 11:03:23 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2012-07-10 11:03:23 (GMT) |
commit | e2a8d6ca464ae7a8fefa63c1e95c9387cfdbd339 (patch) | |
tree | edee9c4b4d6e1b9a4b1de3b967b34b92e743b325 | |
parent | 5861e21598de0fa797735436c93a90ca3b32bc24 (diff) | |
download | tcl-e2a8d6ca464ae7a8fefa63c1e95c9387cfdbd339.zip tcl-e2a8d6ca464ae7a8fefa63c1e95c9387cfdbd339.tar.gz tcl-e2a8d6ca464ae7a8fefa63c1e95c9387cfdbd339.tar.bz2 |
* win/tclWinSock.c (InitializeHostName): Corrected logic that
extracted the name of the computer from the gethostname call so that
it would use the name on success, not failure. Also ensured that the
buffer size is exactly that recommended by Microsoft.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | win/tclWinSock.c | 16 |
2 files changed, 13 insertions, 10 deletions
@@ -1,3 +1,10 @@ +2012-07-10 Donal K. Fellows <dkf@users.sf.net> + + * win/tclWinSock.c (InitializeHostName): Corrected logic that + extracted the name of the computer from the gethostname call so that + it would use the name on success, not failure. Also ensured that the + buffer size is exactly that recommended by Microsoft. + 2012-07-05 Don Porter <dgp@users.sourceforge.net> * unix/tclUnixPipe.c: [Bug 1189293] Make "<<" binary safe. diff --git a/win/tclWinSock.c b/win/tclWinSock.c index 18afb01..63f166d 100644 --- a/win/tclWinSock.c +++ b/win/tclWinSock.c @@ -2431,22 +2431,18 @@ InitializeHostName( Tcl_DStringInit(&ds); if (TclpHasSockets(NULL) == TCL_OK) { /* - * Buffer length of 255 copied slavishly from previous version of - * this routine. Presumably there's a more "correct" macro value - * for a properly sized buffer for a gethostname() call. - * Maintainers are welcome to supply it. + * The buffer size of 256 is recommended by the MSDN page that + * documents gethostname() as being always adequate. */ Tcl_DString inDs; Tcl_DStringInit(&inDs); - Tcl_DStringSetLength(&inDs, 255); + Tcl_DStringSetLength(&inDs, 256); if (gethostname(Tcl_DStringValue(&inDs), - Tcl_DStringLength(&inDs)) == 0) { - Tcl_DStringSetLength(&ds, 0); - } else { - Tcl_ExternalToUtfDString(NULL, - Tcl_DStringValue(&inDs), -1, &ds); + Tcl_DStringLength(&inDs)) == 0) { + Tcl_ExternalToUtfDString(NULL, Tcl_DStringValue(&inDs), -1, + &ds); } Tcl_DStringFree(&inDs); } |