diff options
| author | Kevin B Kenny <kennykb@acm.org> | 2008-06-17 02:16:06 (GMT) |
|---|---|---|
| committer | Kevin B Kenny <kennykb@acm.org> | 2008-06-17 02:16:06 (GMT) |
| commit | e5adf846e76609cd54eee448bccecce052f776f4 (patch) | |
| tree | ef258c0fb1e1a85526a0e6ed5936cc7b4084de06 /generic/tclClock.c | |
| parent | bd536d110b0db6ac7588cf76b7832c6bde35ade6 (diff) | |
| download | tcl-e5adf846e76609cd54eee448bccecce052f776f4.zip tcl-e5adf846e76609cd54eee448bccecce052f776f4.tar.gz tcl-e5adf846e76609cd54eee448bccecce052f776f4.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..a27deb6 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.67 2008/06/17 02:16:06 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; } |
