diff options
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tclEvent.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/generic/tclEvent.c b/generic/tclEvent.c index 3c067a4..4ebdb9f 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.34 2004/04/23 07:21:15 davygrvy Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.35 2004/05/04 12:36:22 dkf Exp $ */ #include "tclInt.h" @@ -676,8 +676,8 @@ TclSetLibraryPath(pathPtr) ckfree(tclLibraryPathStr); } toDupe = Tcl_GetStringFromObj(pathPtr, &size); - tclLibraryPathStr = ckalloc(size+1); - strcpy(tclLibraryPathStr, toDupe); + tclLibraryPathStr = ckalloc((unsigned)size+1); + memcpy(tclLibraryPathStr, toDupe, (unsigned)size+1); } /* @@ -1114,6 +1114,9 @@ Tcl_VwaitObjCmd(clientData, interp, objc, objv) foundEvent = 1; while (!done && foundEvent) { foundEvent = Tcl_DoOneEvent(TCL_ALL_EVENTS); + if (Tcl_LimitExceeded(interp)) { + return TCL_ERROR; + } } Tcl_UntraceVar(interp, nameString, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, @@ -1200,7 +1203,9 @@ Tcl_UpdateObjCmd(clientData, interp, objc, objv) } while (Tcl_DoOneEvent(flags) != 0) { - /* Empty loop body */ + if (Tcl_LimitExceeded(interp)) { + return TCL_ERROR; + } } /* |