diff options
Diffstat (limited to 'generic/tclUtil.c')
| -rw-r--r-- | generic/tclUtil.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/generic/tclUtil.c b/generic/tclUtil.c index 38e562d..9248571 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -1150,13 +1150,13 @@ TclScanElement( */ requireEscape = 1; - length -= (length > 0); + length -= (length+1 > 1); p++; break; } if ((p[1] == '{') || (p[1] == '}') || (p[1] == '\\')) { extra++; /* Escape sequences all one byte longer. */ - length -= (length > 0); + length -= (length+1 > 1); p++; } forbidNone = 1; @@ -4033,10 +4033,11 @@ TclGetProcessGlobalValue( Tcl_MutexLock(&pgvPtr->mutex); epoch = ++pgvPtr->epoch; - Tcl_UtfToExternalDStringEx(pgvPtr->encoding, pgvPtr->value, - pgvPtr->numBytes, TCL_ENCODING_NOCOMPLAIN, &native); - Tcl_ExternalToUtfDStringEx(current, Tcl_DStringValue(&native), - Tcl_DStringLength(&native), TCL_ENCODING_NOCOMPLAIN, &newValue); + Tcl_UtfToExternalDStringEx(NULL, pgvPtr->encoding, pgvPtr->value, + pgvPtr->numBytes, TCL_ENCODING_PROFILE_TCL8, &native, NULL); + Tcl_ExternalToUtfDStringEx(NULL, current, Tcl_DStringValue(&native), + Tcl_DStringLength(&native), TCL_ENCODING_PROFILE_TCL8, + &newValue, NULL); Tcl_DStringFree(&native); Tcl_Free(pgvPtr->value); pgvPtr->value = (char *)Tcl_Alloc(Tcl_DStringLength(&newValue) + 1); |
