diff options
author | Kevin B Kenny <kennykb@acm.org> | 2008-06-17 02:22:26 (GMT) |
---|---|---|
committer | Kevin B Kenny <kennykb@acm.org> | 2008-06-17 02:22:26 (GMT) |
commit | 5f6aa5eb4d8d30dde07c05db427c8934b2c31dff (patch) | |
tree | 61a51da6134055feea25c7aa4d603550108db17a /generic/tclClock.c | |
parent | 32d107e23b1d9d75d74c00fdd52dde8992156169 (diff) | |
download | tcl-5f6aa5eb4d8d30dde07c05db427c8934b2c31dff.zip tcl-5f6aa5eb4d8d30dde07c05db427c8934b2c31dff.tar.gz tcl-5f6aa5eb4d8d30dde07c05db427c8934b2c31dff.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.
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; } |