summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorapnadkarni <apnmbx-wits@yahoo.com>2024-05-24 16:09:33 (GMT)
committerapnadkarni <apnmbx-wits@yahoo.com>2024-05-24 16:09:33 (GMT)
commitbe155fc3d701ca2de6551050e512b834170bc005 (patch)
treeaf6ab42d3865e893110d4cfd849896efcd450ae7
parentb7eeffcdef4802086b4f43db1619b2784d74aa79 (diff)
parent278cf13c0f627be75677c47281e56bb020ebdf5b (diff)
downloadtcl-be155fc3d701ca2de6551050e512b834170bc005.zip
tcl-be155fc3d701ca2de6551050e512b834170bc005.tar.gz
tcl-be155fc3d701ca2de6551050e512b834170bc005.tar.bz2
Merge trunk
-rw-r--r--generic/tclUtil.c3
-rw-r--r--tests/socket.test19
-rw-r--r--unix/tclUnixFile.c16
-rw-r--r--win/tclWinSock.c2
4 files changed, 27 insertions, 13 deletions
diff --git a/generic/tclUtil.c b/generic/tclUtil.c
index fc9cbfe..0fcecbf 100644
--- a/generic/tclUtil.c
+++ b/generic/tclUtil.c
@@ -4259,8 +4259,7 @@ TclGetProcessGlobalValue(
*/
Tcl_ExternalToUtfDString(NULL, pgvPtr->value, pgvPtr->numBytes, &newValue);
- value = Tcl_NewStringObj(Tcl_DStringValue(&newValue), Tcl_DStringLength(&newValue));
- Tcl_DStringFree(&newValue);
+ value = Tcl_DStringToObj(&newValue);
hPtr = Tcl_CreateHashEntry(cacheMap,
INT2PTR(pgvPtr->epoch), &dummy);
Tcl_MutexUnlock(&pgvPtr->mutex);
diff --git a/tests/socket.test b/tests/socket.test
index b628404..2f71d7b 100644
--- a/tests/socket.test
+++ b/tests/socket.test
@@ -1110,6 +1110,25 @@ test socket_$af-7.5 {testing socket specific options} -setup {
close $s
close $s1
} -result [list $localhost 1 3]
+test socket_$af-7.6 {testing socket specific options - bug e589d9bdab} -setup {
+ set timer [after 10000 "set x timed_out"]
+ set l ""
+} -constraints [list socket supported_$af unixOrWin] -body {
+ set s [socket -server accept 0]
+ proc accept {s a p} {
+ global x
+ set x [fconfigure $s -sockname]
+ close $s
+ }
+ set listen [lindex [fconfigure $s -sockname] 2]
+ set s1 [socket $localhost $listen]
+ vwait x
+ lsort [dict keys [fconfigure $s1]]
+} -cleanup {
+ after cancel $timer
+ close $s
+ close $s1
+} -result {-blocking -buffering -buffersize -encoding -eofchar -keepalive -nodelay -peername -profile -sockname -translation}
test socket_$af-8.1 {testing -async flag on sockets} -constraints [list socket supported_$af] -body {
# NOTE: This test may fail on some Solaris 2.4 systems. If it does, check
diff --git a/unix/tclUnixFile.c b/unix/tclUnixFile.c
index 444c73f..ef2d4b9 100644
--- a/unix/tclUnixFile.c
+++ b/unix/tclUnixFile.c
@@ -59,7 +59,6 @@ TclpFindExecutable(
const char *argv0) /* The value of the application's argv[0]
* (native). */
{
- Tcl_Encoding encoding;
const char *name, *p;
Tcl_StatBuf statBuf;
Tcl_DString buffer, nameString, cwd, utfName;
@@ -154,10 +153,9 @@ TclpFindExecutable(
if (name[0] == '/')
#endif
{
- encoding = Tcl_GetEncoding(NULL, NULL);
- Tcl_ExternalToUtfDStringEx(NULL, encoding, name, TCL_INDEX_NONE, TCL_ENCODING_PROFILE_TCL8, &utfName, NULL);
+ Tcl_ExternalToUtfDStringEx(NULL, NULL, name, TCL_INDEX_NONE, TCL_ENCODING_PROFILE_TCL8, &utfName, NULL);
TclSetObjNameOfExecutable(
- Tcl_NewStringObj(Tcl_DStringValue(&utfName), TCL_INDEX_NONE), encoding);
+ Tcl_NewStringObj(Tcl_DStringValue(&utfName), TCL_INDEX_NONE), NULL);
Tcl_DStringFree(&utfName);
goto done;
}
@@ -191,11 +189,10 @@ TclpFindExecutable(
TclDStringAppendDString(&buffer, &nameString);
Tcl_DStringFree(&nameString);
- encoding = Tcl_GetEncoding(NULL, NULL);
- Tcl_ExternalToUtfDStringEx(NULL, encoding, Tcl_DStringValue(&buffer), TCL_INDEX_NONE,
+ Tcl_ExternalToUtfDStringEx(NULL, NULL, Tcl_DStringValue(&buffer), TCL_INDEX_NONE,
TCL_ENCODING_PROFILE_TCL8, &utfName, NULL);
TclSetObjNameOfExecutable(
- Tcl_NewStringObj(Tcl_DStringValue(&utfName), TCL_INDEX_NONE), encoding);
+ Tcl_NewStringObj(Tcl_DStringValue(&utfName), TCL_INDEX_NONE), NULL);
Tcl_DStringFree(&utfName);
done:
@@ -270,15 +267,14 @@ TclpMatchInDirectory(
TclDIR *d;
Tcl_DirEntry *entryPtr;
const char *dirName;
- size_t dirLength, nativeDirLen;
+ Tcl_Size dirLength, nativeDirLen;
int matchHidden, matchHiddenPat;
Tcl_StatBuf statBuf;
Tcl_DString ds; /* native encoding of dir */
Tcl_DString dsOrig; /* utf-8 encoding of dir */
Tcl_DStringInit(&dsOrig);
- dirName = TclGetString(fileNamePtr);
- dirLength = fileNamePtr->length;
+ dirName = TclGetStringFromObj(fileNamePtr, &dirLength);
Tcl_DStringAppend(&dsOrig, dirName, dirLength);
/*
diff --git a/win/tclWinSock.c b/win/tclWinSock.c
index 761023b..c05f550 100644
--- a/win/tclWinSock.c
+++ b/win/tclWinSock.c
@@ -1378,7 +1378,7 @@ TcpGetOptionProc(
reverseDNS = NI_NUMERICHOST;
}
- if (HAVE_OPTION("-peername")) {
+ if ((len == 0) || HAVE_OPTION("-peername")) {
address peername;
socklen_t size = sizeof(peername);