summaryrefslogtreecommitdiffstats
path: root/generic/tclClock.c
diff options
context:
space:
mode:
authorKevin B Kenny <kennykb@acm.org>2008-06-17 02:22:26 (GMT)
committerKevin B Kenny <kennykb@acm.org>2008-06-17 02:22:26 (GMT)
commit5f6aa5eb4d8d30dde07c05db427c8934b2c31dff (patch)
tree61a51da6134055feea25c7aa4d603550108db17a /generic/tclClock.c
parent32d107e23b1d9d75d74c00fdd52dde8992156169 (diff)
downloadtcl-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.c22
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;
}