summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2012-07-16 19:35:25 (GMT)
committerdgp <dgp@users.sourceforge.net>2012-07-16 19:35:25 (GMT)
commitb0d1d281ef9419d8d98666c18ebfb311af336fcb (patch)
tree9dbe96b5000c5c159fff3b670f70d4152d8d297d
parent5bf39fadb4f37e8a60c00b5910911be110cb5406 (diff)
parent589aece81b85ef43d31d0172816dc721986d423f (diff)
downloadtcl-b0d1d281ef9419d8d98666c18ebfb311af336fcb.zip
tcl-b0d1d281ef9419d8d98666c18ebfb311af336fcb.tar.gz
tcl-b0d1d281ef9419d8d98666c18ebfb311af336fcb.tar.bz2
merge 8.5
-rw-r--r--ChangeLog10
-rw-r--r--unix/tclUnixNotfy.c10
-rw-r--r--win/tclWinPipe.c2
-rw-r--r--win/tclWinReg.c2
4 files changed, 17 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 8b8e49a..aecbf9c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2012-07-11 Jan Nijtmans <nijtmans@users.sf.net>
+
+ * win/tclWinReg.c: [Bug #3362446]: registry keys command fails
+ with 8.5/8.6. Follow Microsofts example better in order to prevent
+ problems when using HKEY_PERFORMANCE_DATA.
+
+2012-07-10 Jan Nijtmans <nijtmans@users.sf.net>
+
+ * unix/tclUnixNotfy.c: [Bug 3541646] Don't panic on triggerPipe overrun
+
2012-07-10 Donal K. Fellows <dkf@users.sf.net>
* win/tclWinSock.c (InitializeHostName): Corrected logic that
diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c
index 904c9db..42cc7be 100644
--- a/unix/tclUnixNotfy.c
+++ b/unix/tclUnixNotfy.c
@@ -340,7 +340,7 @@ Tcl_FinalizeNotifier(
*/
if (write(triggerPipe, "q", 1) != 1) {
- Tcl_Panic("Tcl_FinalizeNotifier: unable to write q to triggerPipe");
+ Tcl_Panic("Tcl_FinalizeNotifier: unable to write q to triggerPipe");
}
close(triggerPipe);
while(triggerPipe >= 0) {
@@ -879,8 +879,8 @@ Tcl_WaitForEvent(
waitingListPtr = tsdPtr;
tsdPtr->onList = 1;
- if (write(triggerPipe, "", 1) != 1) {
- Tcl_Panic("Tcl_WaitForEvent: unable to write to triggerPipe");
+ if ((write(triggerPipe, "", 1) == -1) && (errno != EAGAIN)) {
+ Tcl_Panic("Tcl_WaitForEvent: unable to write to triggerPipe");
}
}
@@ -942,8 +942,8 @@ Tcl_WaitForEvent(
}
tsdPtr->nextPtr = tsdPtr->prevPtr = NULL;
tsdPtr->onList = 0;
- if (write(triggerPipe, "", 1) != 1) {
- Tcl_Panic("Tcl_WaitForEvent: unable to write to triggerPipe");
+ if ((write(triggerPipe, "", 1) == -1) && (errno != EAGAIN)) {
+ Tcl_Panic("Tcl_WaitForEvent: unable to write to triggerPipe");
}
}
diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c
index 9a529d2..b6764d4 100644
--- a/win/tclWinPipe.c
+++ b/win/tclWinPipe.c
@@ -1707,7 +1707,7 @@ TclpCreateCommandChannel(
* unique, in case channels share handles (stdin/stdout).
*/
- sprintf(channelName, "file" TCL_I_MODIFIER "x", (size_t)infoPtr);
+ sprintf(channelName, "file%" TCL_I_MODIFIER "x", (size_t)infoPtr);
infoPtr->channel = Tcl_CreateChannel(&pipeChannelType, channelName,
(ClientData) infoPtr, infoPtr->validMask);
diff --git a/win/tclWinReg.c b/win/tclWinReg.c
index 343a22f..a6ce2ce 100644
--- a/win/tclWinReg.c
+++ b/win/tclWinReg.c
@@ -794,7 +794,7 @@ GetValue(
* HKEY_PERFORMANCE_DATA
*/
- length *= 2;
+ length = Tcl_DStringLength(&data) * (regWinProcs->useWide ? 1 : 2);
Tcl_DStringSetLength(&data, (int) length * (regWinProcs->useWide ? 2 : 1));
result = (*regWinProcs->regQueryValueExProc)(key, (char *) nativeValue,
NULL, &type, (BYTE *) Tcl_DStringValue(&data), &length);