diff options
author | stanton <stanton> | 1999-04-06 00:29:19 (GMT) |
---|---|---|
committer | stanton <stanton> | 1999-04-06 00:29:19 (GMT) |
commit | d4e21212df64ceb6131545c1a2a9a27ce0a18f65 (patch) | |
tree | 188bfdf8ef16c3f0cae7192b007d394fd7cb2f89 | |
parent | de5f61704275fc09a91918402a94f198a95aec31 (diff) | |
download | tcl-d4e21212df64ceb6131545c1a2a9a27ce0a18f65.zip tcl-d4e21212df64ceb6131545c1a2a9a27ce0a18f65.tar.gz tcl-d4e21212df64ceb6131545c1a2a9a27ce0a18f65.tar.bz2 |
* 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]
-rw-r--r-- | tests/winTime.test | 49 | ||||
-rw-r--r-- | win/tclWinTime.c | 7 |
2 files changed, 53 insertions, 3 deletions
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 |