From d4e21212df64ceb6131545c1a2a9a27ce0a18f65 Mon Sep 17 00:00:00 2001 From: stanton Date: Tue, 6 Apr 1999 00:29:19 +0000 Subject: * tests/winTime.test: * win/tclWinTime.c: Fixed crash in clock command that occurred when manipulating negative time values in timezones east of GMT. [Bug: 1142, 1458] --- tests/winTime.test | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ win/tclWinTime.c | 7 ++++--- 2 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 tests/winTime.test diff --git a/tests/winTime.test b/tests/winTime.test new file mode 100644 index 0000000..aa3d410 --- /dev/null +++ b/tests/winTime.test @@ -0,0 +1,49 @@ +# This file tests the tclWinTime.c file. +# +# This file contains a collection of tests for one or more of the Tcl +# built-in commands. Sourcing this file into Tcl runs the tests and +# generates output for errors. No output means no errors were found. +# +# Copyright (c) 1997 Sun Microsystems, Inc. +# Copyright (c) 1998-1999 by Scriptics Corporation. +# +# See the file "license.terms" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# RCS: @(#) $Id: winTime.test,v 1.1.2.1 1999/04/06 00:29:19 stanton Exp $ + +if {[lsearch [namespace children] ::tcltest] == -1} { + source [file join [pwd] [file dirname [info script]] defs.tcl] +} + +# The next two tests will crash on Windows if the check for negative +# clock values is not done properly. + +test winTime-1.1 {TclpGetDate} {pcOnly} { + set ::env(TZ) JST-9 + set result [clock format -1 -format %Y] + unset ::env(TZ) + set result +} {1970} +test winTime-1.2 {TclpGetDate} {pcOnly} { + set ::env(TZ) PST8 + set result [clock format 1 -format %Y] + unset ::env(TZ) + set result +} {1969} + +# cleanup +::tcltest::cleanupTests +return + + + + + + + + + + + + diff --git a/win/tclWinTime.c b/win/tclWinTime.c index 196a0db..87953eb 100644 --- a/win/tclWinTime.c +++ b/win/tclWinTime.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinTime.c,v 1.1.2.3 1999/03/10 06:49:31 stanton Exp $ + * RCS: @(#) $Id: tclWinTime.c,v 1.1.2.4 1999/04/06 00:29:19 stanton Exp $ */ #include "tclWinInt.h" @@ -269,10 +269,11 @@ TclpGetDate(t, useGMT) * algorithm ignores daylight savings time before the epoch. */ - time = *tp - _timezone; - if (time >= 0) { + if (*tp >= 0) { return localtime(tp); } + + time = *tp - _timezone; /* * If we aren't near to overflowing the long, just add the bias and -- cgit v0.12