diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2018-11-22 08:03:24 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2018-11-22 08:03:24 (GMT) |
commit | 0e7af6107e1f3b060581d8eb6bacb968c314314d (patch) | |
tree | 876767675902b62a6c94f7501412aa763eeea69a /generic | |
parent | f49b4015121c06d999d6a370fe355c626eec0deb (diff) | |
parent | e537ff7be6133bfccde0c8e2de74610d17c0e94f (diff) | |
download | tcl-0e7af6107e1f3b060581d8eb6bacb968c314314d.zip tcl-0e7af6107e1f3b060581d8eb6bacb968c314314d.tar.gz tcl-0e7af6107e1f3b060581d8eb6bacb968c314314d.tar.bz2 |
Merge 8.6
In addition, tclWinSerial.c: Change back two internal variables from size_t -> int, shouldn't have been done here.
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tclEncoding.c | 9 | ||||
-rw-r--r-- | generic/tclScan.c | 2 | ||||
-rw-r--r-- | generic/tclTrace.c | 16 |
3 files changed, 12 insertions, 15 deletions
diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 6d32676..869431c 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -1739,7 +1739,9 @@ LoadTableEncoding( }; Tcl_DStringInit(&lineString); - Tcl_Gets(chan, &lineString); + if (Tcl_Gets(chan, &lineString) != TCL_IO_FAILURE) { + return NULL; + } line = Tcl_DStringValue(&lineString); fallback = (int) strtol(line, &line, 16); @@ -1779,8 +1781,11 @@ LoadTableEncoding( for (i = 0; i < numPages; i++) { int ch; const char *p; + int expected = 3 + 16 * (16 * 4 + 1); - Tcl_ReadChars(chan, objPtr, 3 + 16 * (16 * 4 + 1), 0); + if (Tcl_ReadChars(chan, objPtr, expected, 0) != expected) { + return NULL; + } p = TclGetString(objPtr); hi = (staticHex[UCHAR(p[0])] << 4) + staticHex[UCHAR(p[1])]; dataPtr->toUnicode[hi] = pageMemPtr; diff --git a/generic/tclScan.c b/generic/tclScan.c index 745f05b..ae9f505 100644 --- a/generic/tclScan.c +++ b/generic/tclScan.c @@ -135,7 +135,7 @@ BuildCharSet( * as well as the dash. */ - if (*format == ']') { + if (*format == ']' || !cset->ranges) { cset->chars[cset->nchars++] = start; cset->chars[cset->nchars++] = ch; } else { diff --git a/generic/tclTrace.c b/generic/tclTrace.c index 8663eae..db48f7a 100644 --- a/generic/tclTrace.c +++ b/generic/tclTrace.c @@ -537,9 +537,7 @@ TraceExecutionObjCmd( Tcl_DeleteTrace(interp, tcmdPtr->stepTrace); tcmdPtr->stepTrace = NULL; - if (tcmdPtr->startCmd != NULL) { - ckfree(tcmdPtr->startCmd); - } + ckfree(tcmdPtr->startCmd); } if (tcmdPtr->flags & TCL_TRACE_EXEC_IN_PROGRESS) { /* @@ -1349,9 +1347,7 @@ TraceCommandProc( if (tcmdPtr->stepTrace != NULL) { Tcl_DeleteTrace(interp, tcmdPtr->stepTrace); tcmdPtr->stepTrace = NULL; - if (tcmdPtr->startCmd != NULL) { - ckfree(tcmdPtr->startCmd); - } + ckfree(tcmdPtr->startCmd); } if (tcmdPtr->flags & TCL_TRACE_EXEC_IN_PROGRESS) { /* @@ -1814,9 +1810,7 @@ TraceExecutionProc( && (strcmp(command, tcmdPtr->startCmd) == 0)) { Tcl_DeleteTrace(interp, tcmdPtr->stepTrace); tcmdPtr->stepTrace = NULL; - if (tcmdPtr->startCmd != NULL) { - ckfree(tcmdPtr->startCmd); - } + ckfree(tcmdPtr->startCmd); } /* @@ -1941,9 +1935,7 @@ TraceExecutionProc( if (tcmdPtr->stepTrace != NULL) { Tcl_DeleteTrace(interp, tcmdPtr->stepTrace); tcmdPtr->stepTrace = NULL; - if (tcmdPtr->startCmd != NULL) { - ckfree(tcmdPtr->startCmd); - } + ckfree(tcmdPtr->startCmd); } } if (call) { |