diff options
author | kennykb <kennykb@noemail.net> | 2008-06-17 02:22:25 (GMT) |
---|---|---|
committer | kennykb <kennykb@noemail.net> | 2008-06-17 02:22:25 (GMT) |
commit | 83e39c54dcb20ff58aee9d6a3c5f0c71877dde72 (patch) | |
tree | 61a51da6134055feea25c7aa4d603550108db17a /generic/tclClock.c | |
parent | 97f012a0998aaf866d6a9ffce1a94a376387575e (diff) | |
download | tcl-83e39c54dcb20ff58aee9d6a3c5f0c71877dde72.zip tcl-83e39c54dcb20ff58aee9d6a3c5f0c71877dde72.tar.gz tcl-83e39c54dcb20ff58aee9d6a3c5f0c71877dde72.tar.bz2 |
2006-06-17 Kevin Kenny <kennykb@acm.org>
* generic/tclClock.c (ConvertLocalToUTC):
* tests/clock.test (clock-63.1): Fixed a bug where the
internal ConvertLocalToUTC command segfaulted if passed a
dictionary without the 'localSeconds' key. To the best of
my knowledge, the bug was not observable in the [clock]
command itself.
FossilOrigin-Name: 73e48562777cb81c7d5b157a80dadc21b4572d0d
Diffstat (limited to 'generic/tclClock.c')
-rw-r--r-- | generic/tclClock.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/generic/tclClock.c b/generic/tclClock.c index 12c2e64..53edf55 100644 --- a/generic/tclClock.c +++ b/generic/tclClock.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclClock.c,v 1.66 2008/02/27 02:08:27 kennykb Exp $ + * RCS: @(#) $Id: tclClock.c,v 1.66.2.1 2008/06/17 02:22:26 kennykb Exp $ */ #include "tclInt.h" @@ -333,12 +333,20 @@ ClockConvertlocaltoutcObjCmd( return TCL_ERROR; } dict = objv[1]; - if ((Tcl_DictObjGet(interp, dict, literals[LIT_LOCALSECONDS], - &secondsObj) != TCL_OK) - || (Tcl_GetWideIntFromObj(interp, secondsObj, - &(fields.localSeconds)) != TCL_OK) - || (TclGetIntFromObj(interp, objv[3], &changeover) != TCL_OK) - || ConvertLocalToUTC(interp, &fields, objv[2], changeover)) { + if (Tcl_DictObjGet(interp, dict, literals[LIT_LOCALSECONDS], + &secondsObj)!= TCL_OK) { + fprintf(stderr, "fell out here\n"); fflush(stderr); + return TCL_ERROR; + } + if (secondsObj == NULL) { + Tcl_SetObjResult(interp, Tcl_NewStringObj("key \"localseconds\" not " + "found in dictionary", -1)); + return TCL_ERROR; + } + if ((Tcl_GetWideIntFromObj(interp, secondsObj, + &(fields.localSeconds)) != TCL_OK) + || (TclGetIntFromObj(interp, objv[3], &changeover) != TCL_OK) + || ConvertLocalToUTC(interp, &fields, objv[2], changeover)) { return TCL_ERROR; } |