From 8afdb9286632c44763fe2b168b72cc6606ac52d4 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Thu, 9 Jun 2016 11:38:54 +0000 Subject: Fix [e14c77b845] for MSVC6: Compilation error over typedef --- generic/tclDate.c | 8 +------- generic/tclInt.h | 5 ++--- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/generic/tclDate.c b/generic/tclDate.c index 6222a8a..e4dd000 100644 --- a/generic/tclDate.c +++ b/generic/tclDate.c @@ -359,14 +359,8 @@ typedef short int yytype_int16; #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ -# elif defined size_t -# define YYSIZE_T size_t -# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t # else -# define YYSIZE_T unsigned int +# define YYSIZE_T size_t # endif #endif diff --git a/generic/tclInt.h b/generic/tclInt.h index fa91528..7ea37bb 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -48,9 +48,8 @@ #else #include #endif -#if defined(_WIN32) -#include -#elif defined(STDC_HEADERS) +#if defined(STDC_HEADERS) || defined(__STDC__) || defined(__C99__FUNC__) \ + || defined(__cplusplus) || defined(_MSC_VER) #include #else typedef int ptrdiff_t; -- cgit v0.12 From b453d7479061b4f7fee8c55e790deab9f3e16de0 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 10 Jun 2016 13:43:13 +0000 Subject: Corrects reported bug, but makes many tests fail. Something subtle about what we should expect when recording the line of a command that isn't known until runtime. --- generic/tclCompile.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 5030f89..8cdd9d2 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -2602,8 +2602,12 @@ EnterCmdWordData( TclAdvanceLines (&wordLine, last, tokenPtr->start); TclAdvanceContinuations (&wordLine, &wordNext, tokenPtr->start - envPtr->source); +#if 0 wwlines[wordIdx] = (TclWordKnownAtCompileTime(tokenPtr, NULL) ? wordLine : -1); +#else + wwlines[wordIdx] = wordLine; +#endif ePtr->line[wordIdx] = wordLine; ePtr->next[wordIdx] = wordNext; last = tokenPtr->start; -- cgit v0.12 From e83f835a195b90a303657bda68904f37b14b50aa Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Tue, 14 Jun 2016 09:12:46 +0000 Subject: (cherry-pick): Fix [e14c77b845]: Compilation error over typedef. --- generic/tclDate.c | 8 +------- generic/tclInt.h | 3 ++- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/generic/tclDate.c b/generic/tclDate.c index 0bda22f..1adcf1e 100644 --- a/generic/tclDate.c +++ b/generic/tclDate.c @@ -359,14 +359,8 @@ typedef short int yytype_int16; #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ -# elif defined size_t -# define YYSIZE_T size_t -# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t # else -# define YYSIZE_T unsigned int +# define YYSIZE_T size_t # endif #endif diff --git a/generic/tclInt.h b/generic/tclInt.h index 18574c3..6113f23 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -48,7 +48,8 @@ #else #include #endif -#ifdef STDC_HEADERS +#if defined(STDC_HEADERS) || defined(__STDC__) || defined(__C99__FUNC__) \ + || defined(__cplusplus) || defined(_MSC_VER) #include #else typedef int ptrdiff_t; -- cgit v0.12 From acdd236f96616d9dd6707bc56fffacf95cb81b6a Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Tue, 14 Jun 2016 09:55:03 +0000 Subject: Fix [7393be0be6e7f91cbb2016fa777896e3895929e3|7393be0be6]: Tcl Thread library doesn't work in Debug build on Windows_x64 --- win/tclWinThrd.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/win/tclWinThrd.c b/win/tclWinThrd.c index 2413a78..7828e65 100644 --- a/win/tclWinThrd.c +++ b/win/tclWinThrd.c @@ -167,7 +167,6 @@ TclWinThreadStart( * from TclpThreadCreate */ { WinThread *winThreadPtr = (WinThread *) lpParameter; - unsigned int fpmask; LPTHREAD_START_ROUTINE lpOrigStartAddress; LPVOID lpOrigParameter; @@ -175,13 +174,11 @@ TclWinThreadStart( return TCL_ERROR; } - fpmask = _MCW_EM | _MCW_RC | _MCW_PC; - -#if defined(_MSC_VER) && _MSC_VER >= 1200 - fpmask |= _MCW_DN; + _controlfp(winThreadPtr->fpControl, _MCW_EM | _MCW_RC | 0x03000000 /* _MCW_DN */ +#if !defined(_WIN64) + | _MCW_PC #endif - - _controlfp(winThreadPtr->fpControl, fpmask); + ); lpOrigStartAddress = winThreadPtr->lpStartAddress; lpOrigParameter = winThreadPtr->lpParameter; -- cgit v0.12 From c755ef08151343eb145710489f8c999edbef15ff Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 16 Jun 2016 14:23:15 +0000 Subject: [16828b3744] Prototype fix for merging forward. --- generic/tclEvent.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/generic/tclEvent.c b/generic/tclEvent.c index ba2bb64..4de8f0b 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -1451,6 +1451,11 @@ VwaitVarProc( int *donePtr = clientData; *donePtr = 1; + + Tcl_UntraceVar(interp, name1, + TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, + VwaitVarProc, clientData); + return NULL; } -- cgit v0.12 From 95fb48bf07be37ad0717475514d2c444602a0a6c Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 16 Jun 2016 16:14:28 +0000 Subject: Correct the patch. --- generic/tclEvent.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/generic/tclEvent.c b/generic/tclEvent.c index 95fbf79..906ecbb 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -1457,11 +1457,8 @@ VwaitVarProc( int *donePtr = clientData; *donePtr = 1; - - Tcl_UntraceVar(interp, name1, - TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, + Tcl_UntraceVar(interp, name1, TCL_TRACE_WRITES|TCL_TRACE_UNSETS, VwaitVarProc, clientData); - return NULL; } -- cgit v0.12 From ac2ab0075f3bd2da55b9eb003f12455ca981df21 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 16 Jun 2016 16:59:09 +0000 Subject: Improve fix and add test. --- generic/tclCompile.c | 7 ++----- tests/info.test | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 8cdd9d2..31e69ad 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -2602,12 +2602,9 @@ EnterCmdWordData( TclAdvanceLines (&wordLine, last, tokenPtr->start); TclAdvanceContinuations (&wordLine, &wordNext, tokenPtr->start - envPtr->source); -#if 0 wwlines[wordIdx] = - (TclWordKnownAtCompileTime(tokenPtr, NULL) ? wordLine : -1); -#else - wwlines[wordIdx] = wordLine; -#endif + ((wordIdx == 0) || TclWordKnownAtCompileTime(tokenPtr, NULL)) + ? wordLine : -1; ePtr->line[wordIdx] = wordLine; ePtr->next[wordIdx] = wordNext; last = tokenPtr->start; diff --git a/tests/info.test b/tests/info.test index 937da8c..d30bf9a 100644 --- a/tests/info.test +++ b/tests/info.test @@ -1818,6 +1818,23 @@ test info-38.2 {location information for uplevel, dl, direct-literal} -match glo * {type source line 1814 file info.test cmd etrace level 1} * {type source line 1812 file info.test cmd uplevel\\ \\\\ level 1}} -cleanup {interp delete sub} +test info-39.0 {Bug 4b61afd660} -setup { + proc probe {} { + return [dict get [info frame -1] line] + } + set body { + set cmd probe + $cmd + } + proc demo {} $body +} -body { + demo +} -cleanup { + unset -nocomplain body + rename demo {} + rename probe {} +} -result 3 + # cleanup catch {namespace delete test_ns_info1 test_ns_info2} ::tcltest::cleanupTests -- cgit v0.12 From 624ec168ecde5fbdbe83e4e7c558805b408fabcc Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 16 Jun 2016 17:06:25 +0000 Subject: [16828b3744] [vwait] *must* successfully undo its variable trace, or else it risks corrupting memory. Namespace teardown complexities were giving the traces an opportunity to survive. Added another (arguably better) Tcl_UntraceVar() call to be sure we avoid this problem. --- generic/tclEvent.c | 2 ++ tests/event.test | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/generic/tclEvent.c b/generic/tclEvent.c index c664b38..4db524c 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -1379,6 +1379,8 @@ VwaitVarProc( int *donePtr = (int *) clientData; *donePtr = 1; + Tcl_UntraceVar(interp, name1, TCL_TRACE_WRITES|TCL_TRACE_UNSETS, + VwaitVarProc, clientData); return NULL; } diff --git a/tests/event.test b/tests/event.test index a7122f9..4996b97 100644 --- a/tests/event.test +++ b/tests/event.test @@ -559,6 +559,15 @@ test event-11.6 {Tcl_VwaitCmd procedure: round robin scheduling, same source} { removeFile $test2file list $x $y $z } {3 3 done} +test event-11.7 {Bug 16828b3744} { + after idle { + set ::t::v 1 + namespace delete ::t + } + namespace eval ::t { + vwait ::t::v + } +} {} test event-12.1 {Tcl_UpdateCmd procedure} { -- cgit v0.12