From 473ebe84efb63f84c2db3a04cad292b6ce4d4c15 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Tue, 12 Oct 2021 14:18:18 +0000 Subject: Fix build failure with --enable-symbols build on Windows: Some code makes assumptions on Tcl_Time structure ... --- generic/tcl.h | 3 --- generic/tclDecls.h | 14 +++++++++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/generic/tcl.h b/generic/tcl.h index 827dc0a..2dc3ae2 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -1420,9 +1420,6 @@ typedef enum { typedef struct Tcl_Time { long sec; /* Seconds. */ long usec; /* Microseconds. */ -#if defined(_WIN32) && defined(_WIN64) - __int64 reserved; /* Not used, except for win64 <-> Cygwin64 interoperability. */ -#endif } Tcl_Time; typedef void (Tcl_SetTimerProc) (CONST86 Tcl_Time *timePtr); diff --git a/generic/tclDecls.h b/generic/tclDecls.h index 26d1cd6..23f0bae 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -3954,12 +3954,16 @@ extern const TclStubs *tclStubsPtr; /* Handle Win64 tk.dll being loaded in Cygwin64. */ # define Tcl_GetTime(t) \ do { \ - Tcl_Time *_timePtr = (t); \ - _timePtr->reserved = -1; \ - tclStubsPtr->tcl_GetTime((_timePtr)); \ - if (_timePtr->reserved != -1) { \ - _timePtr->usec = _timePtr->reserved; \ + union { \ + Tcl_Time now; \ + __int64 reserved; \ + } _t; \ + _t.reserved = -1; \ + tclStubsPtr->tcl_GetTime((&_t.now)); \ + if (_t.reserved != -1) { \ + _t.now.usec = _t.reserved; \ } \ + *t = _t.now; \ } while (0) # endif # if defined(__CYGWIN__) && defined(TCL_WIDE_INT_IS_LONG) -- cgit v0.12 From ee2bdcdf6bea16acbb52c9c6ce9c2e8332c1a50f Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Tue, 12 Oct 2021 14:27:31 +0000 Subject: Missing braces (just to be sure) --- generic/tclDecls.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generic/tclDecls.h b/generic/tclDecls.h index 23f0bae..621b1ba 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -3963,7 +3963,7 @@ extern const TclStubs *tclStubsPtr; if (_t.reserved != -1) { \ _t.now.usec = _t.reserved; \ } \ - *t = _t.now; \ + *(t) = _t.now; \ } while (0) # endif # if defined(__CYGWIN__) && defined(TCL_WIDE_INT_IS_LONG) -- cgit v0.12