summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2019-03-08 22:51:16 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2019-03-08 22:51:16 (GMT)
commite6a53eb44dab26c44e01f4620467c2c5ae0f27e5 (patch)
tree59277fc50a99e395168027e1ffa8bbe0be18a7cb
parente30b8a9185f7d16573e849b3df2ec1d1791439ea (diff)
parent2b821c69deba46a4f4634dbbfa6b5b34b6036f9c (diff)
downloadtcl-e6a53eb44dab26c44e01f4620467c2c5ae0f27e5.zip
tcl-e6a53eb44dab26c44e01f4620467c2c5ae0f27e5.tar.gz
tcl-e6a53eb44dab26c44e01f4620467c2c5ae0f27e5.tar.bz2
Merge 8.7
-rw-r--r--.travis.yml31
-rw-r--r--generic/regcomp.c9
-rw-r--r--generic/regexec.c8
-rw-r--r--generic/tclBinary.c4
-rw-r--r--generic/tclCmdAH.c2
-rw-r--r--generic/tclConfig.c2
-rw-r--r--generic/tclEncoding.c49
-rw-r--r--generic/tclExecute.c2
-rw-r--r--generic/tclIO.c4
-rw-r--r--generic/tclIOGT.c2
-rw-r--r--generic/tclIORChan.c2
-rw-r--r--generic/tclIORTrans.c16
-rw-r--r--generic/tclMain.c17
-rw-r--r--generic/tclStringObj.c28
-rw-r--r--generic/tclStubInit.c1
-rw-r--r--generic/tclUtf.c12
-rw-r--r--generic/tclUtil.c4
-rw-r--r--generic/tclZlib.c16
-rw-r--r--tests/encoding.test7
-rw-r--r--win/tclWinFile.c14
20 files changed, 136 insertions, 94 deletions
diff --git a/.travis.yml b/.travis.yml
index 34d4176..77ba068 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -122,6 +122,22 @@ matrix:
- BUILD_DIR=win
- CFGOPT=--host=i686-w64-mingw32
- NO_DIRECT_TEST=1
+ - os: linux
+ dist: xenial
+ compiler: i686-w64-mingw32-gcc
+ addons:
+ apt:
+ packages:
+ - gcc-mingw-w64-base
+ - binutils-mingw-w64-i686
+ - gcc-mingw-w64-i686
+ - gcc-mingw-w64
+ - gcc-multilib
+ - wine
+ env:
+ - BUILD_DIR=win
+ - CFGOPT="--host=i686-w64-mingw32 CFLAGS=-DTCL_UTF_MAX=6"
+ - NO_DIRECT_TEST=1
# Test with mingw-w64 (64 bit)
- os: linux
dist: xenial
@@ -138,6 +154,21 @@ matrix:
- BUILD_DIR=win
- CFGOPT="--host=x86_64-w64-mingw32 --enable-64bit"
- NO_DIRECT_TEST=1
+ - os: linux
+ dist: xenial
+ compiler: x86_64-w64-mingw32-gcc
+ addons:
+ apt:
+ packages:
+ - gcc-mingw-w64-base
+ - binutils-mingw-w64-x86-64
+ - gcc-mingw-w64-x86-64
+ - gcc-mingw-w64
+ - wine
+ env:
+ - BUILD_DIR=win
+ - CFGOPT="--host=x86_64-w64-mingw32 --enable-64bit CFLAGS=-DTCL_UTF_MAX=6"
+ - NO_DIRECT_TEST=1
before_install:
- export ERROR_ON_FAILURES=1
diff --git a/generic/regcomp.c b/generic/regcomp.c
index 144e7c2..0855685 100644
--- a/generic/regcomp.c
+++ b/generic/regcomp.c
@@ -210,7 +210,7 @@ struct vars {
int lexcon; /* lexical context type (see lex.c) */
int nsubexp; /* subexpression count */
struct subre **subs; /* subRE pointer vector */
- size_t nsubs; /* length of vector */
+ int nsubs; /* length of vector */
struct subre *sub10[10]; /* initial vector, enough for most */
struct nfa *nfa; /* the NFA */
struct colormap *cm; /* character color map */
@@ -287,8 +287,7 @@ compile(
{
AllocVars(v);
struct guts *g;
- int i;
- size_t j;
+ int i, j;
FILE *debug = (flags&REG_PROGRESS) ? stdout : NULL;
#define CNOERR() { if (ISERR()) return freev(v, v->err); }
@@ -477,7 +476,7 @@ moresubs(
size_t wanted) /* want enough room for this one */
{
struct subre **p;
- size_t n;
+ int n;
assert(wanted > 0 && wanted >= v->nsubs);
n = wanted * 3 / 2 + 1;
@@ -797,7 +796,7 @@ parseqatom(
struct subre *t;
int cap; /* capturing parens? */
int pos; /* positive lookahead? */
- size_t subno; /* capturing-parens or backref number */
+ int subno; /* capturing-parens or backref number */
int atomtype;
int qprefer; /* quantifier short/long preference */
int f;
diff --git a/generic/regexec.c b/generic/regexec.c
index 02a4614..a7a0c67 100644
--- a/generic/regexec.c
+++ b/generic/regexec.c
@@ -172,8 +172,8 @@ exec(
{
AllocVars(v);
int st, backref;
- size_t n;
- size_t i;
+ int n;
+ int i;
#define LOCALMAT 20
regmatch_t mat[LOCALMAT];
#define LOCALDFAS 40
@@ -236,7 +236,7 @@ exec(
v->stop = (chr *)string + len;
v->err = 0;
assert(v->g->ntree >= 0);
- n = (size_t) v->g->ntree;
+ n = v->g->ntree;
if (n <= LOCALDFAS)
v->subdfas = subdfas;
else
@@ -278,7 +278,7 @@ exec(
if (v->pmatch != pmatch && v->pmatch != mat) {
FREE(v->pmatch);
}
- n = (size_t) v->g->ntree;
+ n = v->g->ntree;
for (i = 0; i < n; i++) {
if (v->subdfas[i] != NULL)
freeDFA(v->subdfas[i]);
diff --git a/generic/tclBinary.c b/generic/tclBinary.c
index 53d0fbc..cb9cd8e 100644
--- a/generic/tclBinary.c
+++ b/generic/tclBinary.c
@@ -1391,7 +1391,7 @@ BinaryScanCmd(
const char *errorString;
const char *str;
int offset, size;
- size_t length;
+ size_t length = 0;
int i;
Tcl_Obj *valuePtr, *elementPtr;
@@ -2720,7 +2720,7 @@ BinaryEncodeUu(
int lineLength = 61;
const unsigned char SingleNewline[] = { (unsigned char) '\n' };
const unsigned char *wrapchar = SingleNewline;
- size_t j, offset, count, wrapcharlen = sizeof(SingleNewline);
+ size_t j, offset, count = 0, wrapcharlen = sizeof(SingleNewline);
enum { OPT_MAXLEN, OPT_WRAPCHAR };
static const char *const optStrings[] = { "-maxlen", "-wrapchar", NULL };
diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c
index 970bdb4..aefc713 100644
--- a/generic/tclCmdAH.c
+++ b/generic/tclCmdAH.c
@@ -428,7 +428,7 @@ EncodingConvertfromObjCmd(
Tcl_Obj *data; /* Byte array to convert */
Tcl_DString ds; /* Buffer to hold the string */
Tcl_Encoding encoding; /* Encoding to use */
- size_t length; /* Length of the byte array being converted */
+ size_t length = 0; /* Length of the byte array being converted */
const char *bytesPtr; /* Pointer to the first byte of the array */
if (objc == 2) {
diff --git a/generic/tclConfig.c b/generic/tclConfig.c
index 7e5a311..8393b9c 100644
--- a/generic/tclConfig.c
+++ b/generic/tclConfig.c
@@ -202,7 +202,7 @@ QueryConfigObjCmd(
QCCD *cdPtr = clientData;
Tcl_Obj *pkgName = cdPtr->pkg;
Tcl_Obj *pDB, *pkgDict, *val, *listPtr;
- size_t n;
+ size_t n = 0;
int index, m;
static const char *const subcmdStrings[] = {
"get", "list", NULL
diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c
index 6faaef4..14efadb 100644
--- a/generic/tclEncoding.c
+++ b/generic/tclEncoding.c
@@ -2382,19 +2382,16 @@ UnicodeToUtfProc(
const char *srcStart, *srcEnd;
const char *dstEnd, *dstStart;
int result, numChars, charLimit = INT_MAX;
- Tcl_UniChar *chPtr = (Tcl_UniChar *) statePtr;
+ unsigned short ch;
- if (flags & TCL_ENCODING_START) {
- *statePtr = 0;
- }
if (flags & TCL_ENCODING_CHAR_LIMIT) {
charLimit = *dstCharsPtr;
}
result = TCL_OK;
- if ((srcLen % sizeof(Tcl_UniChar)) != 0) {
+ if ((srcLen % sizeof(unsigned short)) != 0) {
result = TCL_CONVERT_MULTIBYTE;
- srcLen /= sizeof(Tcl_UniChar);
- srcLen *= sizeof(Tcl_UniChar);
+ srcLen /= sizeof(unsigned short);
+ srcLen *= sizeof(unsigned short);
}
srcStart = src;
@@ -2411,16 +2408,16 @@ UnicodeToUtfProc(
/*
* Special case for 1-byte utf chars for speed. Make sure we work with
- * Tcl_UniChar-size data.
+ * unsigned short-size data.
*/
- *chPtr = *(Tcl_UniChar *)src;
- if (*chPtr && *chPtr < 0x80) {
- *dst++ = (*chPtr & 0xFF);
+ ch = *(unsigned short *)src;
+ if (ch && ch < 0x80) {
+ *dst++ = (ch & 0xFF);
} else {
- dst += Tcl_UniCharToUtf(*chPtr, dst);
+ dst += Tcl_UniCharToUtf(ch, dst);
}
- src += sizeof(Tcl_UniChar);
+ src += sizeof(unsigned short);
}
*srcReadPtr = src - srcStart;
@@ -2514,20 +2511,30 @@ UtfToUnicodeProc(
#ifdef WORDS_BIGENDIAN
#if TCL_UTF_MAX > 4
- *dst++ = (*chPtr >> 24);
- *dst++ = ((*chPtr >> 16) & 0xFF);
- *dst++ = ((*chPtr >> 8) & 0xFF);
- *dst++ = (*chPtr & 0xFF);
+ if (*chPtr <= 0xFFFF) {
+ *dst++ = (*chPtr >> 8);
+ *dst++ = (*chPtr & 0xFF);
+ } else {
+ *dst++ = ((*chPtr & 0x3) >> 8) | 0xDC;
+ *dst++ = (*chPtr & 0xFF);
+ *dst++ = (((*chPtr - 0x10000) >> 18) & 0x3) | 0xD8;
+ *dst++ = (((*chPtr - 0x10000) >> 10) & 0xFF);
+ }
#else
*dst++ = (*chPtr >> 8);
*dst++ = (*chPtr & 0xFF);
#endif
#else
#if TCL_UTF_MAX > 4
- *dst++ = (*chPtr & 0xFF);
- *dst++ = ((*chPtr >> 8) & 0xFF);
- *dst++ = ((*chPtr >> 16) & 0xFF);
- *dst++ = (*chPtr >> 24);
+ if (*chPtr <= 0xFFFF) {
+ *dst++ = (*chPtr & 0xFF);
+ *dst++ = (*chPtr >> 8);
+ } else {
+ *dst++ = (((*chPtr - 0x10000) >> 10) & 0xFF);
+ *dst++ = (((*chPtr - 0x10000) >> 18) & 0x3) | 0xD8;
+ *dst++ = (*chPtr & 0xFF);
+ *dst++ = ((*chPtr & 0x3) >> 8) | 0xDC;
+ }
#else
*dst++ = (*chPtr & 0xFF);
*dst++ = (*chPtr >> 8);
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index c44eca3..4819abd 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -5287,7 +5287,7 @@ TEBCresume(
nocase);
} else if (TclIsPureByteArray(valuePtr) && !nocase) {
unsigned char *bytes1, *bytes2;
- size_t wlen1, wlen2;
+ size_t wlen1 = 0, wlen2 = 0;
bytes1 = TclGetByteArrayFromObj(valuePtr, &wlen1);
bytes2 = TclGetByteArrayFromObj(value2Ptr, &wlen2);
diff --git a/generic/tclIO.c b/generic/tclIO.c
index f6119df..619982a 100644
--- a/generic/tclIO.c
+++ b/generic/tclIO.c
@@ -4188,7 +4188,7 @@ Tcl_WriteObj(
Channel *chanPtr;
ChannelState *statePtr; /* State info for channel */
const char *src;
- size_t srcLen;
+ size_t srcLen = 0;
statePtr = ((Channel *) chan)->state;
chanPtr = statePtr->topChanPtr;
@@ -4941,7 +4941,7 @@ TclGetsObjBinary(
/* State info for channel */
ChannelBuffer *bufPtr;
int inEofChar, skip, copiedTotal, oldFlags, oldRemoved;
- size_t rawLen, byteLen, oldLength;
+ size_t rawLen, byteLen = 0, oldLength;
int eolChar;
unsigned char *dst, *dstEnd, *eol, *eof, *byteArray;
diff --git a/generic/tclIOGT.c b/generic/tclIOGT.c
index 5e52042..9cda58c 100644
--- a/generic/tclIOGT.c
+++ b/generic/tclIOGT.c
@@ -378,7 +378,7 @@ ExecuteCallback(
* interpreters. */
{
Tcl_Obj *resObj; /* See below, switch (transmit). */
- size_t resLen;
+ size_t resLen = 0;
unsigned char *resBuf;
Tcl_InterpState state = NULL;
int res = TCL_OK;
diff --git a/generic/tclIORChan.c b/generic/tclIORChan.c
index cae0836..46c69a1 100644
--- a/generic/tclIORChan.c
+++ b/generic/tclIORChan.c
@@ -2998,7 +2998,7 @@ ForwardProc(
* Process a regular result.
*/
- size_t bytec; /* Number of returned bytes */
+ size_t bytec = 0; /* Number of returned bytes */
unsigned char *bytev; /* Array of returned bytes */
bytev = TclGetByteArrayFromObj(resObj, &bytec);
diff --git a/generic/tclIORTrans.c b/generic/tclIORTrans.c
index 31ed8d4..9327037 100644
--- a/generic/tclIORTrans.c
+++ b/generic/tclIORTrans.c
@@ -2597,7 +2597,7 @@ ForwardProc(
* Sent it back to the request originator.
*/
- size_t bytec; /* Number of returned bytes */
+ size_t bytec = 0; /* Number of returned bytes */
unsigned char *bytev;
/* Array of returned bytes */
@@ -2631,7 +2631,7 @@ ForwardProc(
* Sent it back to the request originator.
*/
- size_t bytec; /* Number of returned bytes */
+ size_t bytec = 0; /* Number of returned bytes */
unsigned char *bytev;
/* Array of returned bytes */
@@ -2661,7 +2661,7 @@ ForwardProc(
* Sent it back to the request originator.
*/
- size_t bytec; /* Number of returned bytes */
+ size_t bytec = 0; /* Number of returned bytes */
unsigned char *bytev; /* Array of returned bytes */
bytev = TclGetByteArrayFromObj(resObj, &bytec);
@@ -2687,7 +2687,7 @@ ForwardProc(
* Sent it back to the request originator.
*/
- size_t bytec; /* Number of returned bytes */
+ size_t bytec = 0; /* Number of returned bytes */
unsigned char *bytev;
/* Array of returned bytes */
@@ -3080,7 +3080,7 @@ TransformRead(
Tcl_Obj *bufObj)
{
Tcl_Obj *resObj;
- size_t bytec; /* Number of returned bytes */
+ size_t bytec = 0; /* Number of returned bytes */
unsigned char *bytev; /* Array of returned bytes */
/*
@@ -3135,7 +3135,7 @@ TransformWrite(
{
Tcl_Obj *bufObj;
Tcl_Obj *resObj;
- size_t bytec; /* Number of returned bytes */
+ size_t bytec = 0; /* Number of returned bytes */
unsigned char *bytev; /* Array of returned bytes */
int res;
@@ -3202,7 +3202,7 @@ TransformDrain(
int *errorCodePtr)
{
Tcl_Obj *resObj;
- size_t bytec; /* Number of returned bytes */
+ size_t bytec = 0; /* Number of returned bytes */
unsigned char *bytev; /* Array of returned bytes */
/*
@@ -3251,7 +3251,7 @@ TransformFlush(
int op)
{
Tcl_Obj *resObj;
- size_t bytec; /* Number of returned bytes */
+ size_t bytec = 0; /* Number of returned bytes */
unsigned char *bytev; /* Array of returned bytes */
int res;
diff --git a/generic/tclMain.c b/generic/tclMain.c
index c4afcd9..ea69b2d 100644
--- a/generic/tclMain.c
+++ b/generic/tclMain.c
@@ -59,20 +59,27 @@
* encoding to UTF-8).
*/
-#ifdef UNICODE
+#if defined(UNICODE) && (TCL_UTF_MAX <= 4)
# define NewNativeObj Tcl_NewUnicodeObj
-#else /* !UNICODE */
+#else /* !UNICODE || (TCL_UTF_MAX > 4) */
static inline Tcl_Obj *
NewNativeObj(
- char *string,
+ TCHAR *string,
size_t length)
{
Tcl_DString ds;
- Tcl_ExternalToUtfDString(NULL, string, length, &ds);
+#ifdef UNICODE
+ if (length > 0) {
+ length *= sizeof(WCHAR);
+ }
+ Tcl_WinTCharToUtf(string, length, &ds);
+#else
+ Tcl_ExternalToUtfDString(NULL, (char *) string, length, &ds);
+#endif
return TclDStringToObj(&ds);
}
-#endif /* !UNICODE */
+#endif /* !UNICODE || (TCL_UTF_MAX > 4) */
/*
* Declarations for various library functions and variables (don't want to
diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c
index 1761296..2635583 100644
--- a/generic/tclStringObj.c
+++ b/generic/tclStringObj.c
@@ -397,7 +397,7 @@ Tcl_GetCharLength(
* of. */
{
String *stringPtr;
- size_t numChars;
+ size_t numChars = 0;
/*
* Quick, no-shimmer return for short string reps.
@@ -518,7 +518,7 @@ Tcl_GetUniChar(
*/
if (TclIsPureByteArray(objPtr)) {
- size_t length;
+ size_t length = 0;
unsigned char *bytes = TclGetByteArrayFromObj(objPtr, &length);
if (index >= length) {
return -1;
@@ -642,7 +642,7 @@ Tcl_GetRange(
{
Tcl_Obj *newObjPtr; /* The Tcl object to find the range of. */
String *stringPtr;
- size_t length;
+ size_t length = 0;
if (first == TCL_INDEX_NONE) {
first = TCL_INDEX_START;
@@ -1238,7 +1238,7 @@ Tcl_AppendObjToObj(
Tcl_Obj *appendObjPtr) /* Object to append. */
{
String *stringPtr;
- size_t length, numChars;
+ size_t length = 0, numChars;
size_t appendNumChars = TCL_AUTO_LENGTH;
const char *bytes;
@@ -1279,7 +1279,7 @@ Tcl_AppendObjToObj(
* First, get the lengths.
*/
- size_t lengthSrc;
+ size_t lengthSrc = 0;
(void) TclGetByteArrayFromObj(objPtr, &length);
(void) TclGetByteArrayFromObj(appendObjPtr, &lengthSrc);
@@ -2949,7 +2949,7 @@ TclStringCat(
* Result will be pure byte array. Pre-size it
*/
- size_t numBytes;
+ size_t numBytes = 0;
ov = objv;
oc = objc;
do {
@@ -3100,7 +3100,7 @@ TclStringCat(
*/
if (inPlace && !Tcl_IsShared(*objv)) {
- size_t start;
+ size_t start = 0;
objResultPtr = *objv++; objc--;
(void)TclGetByteArrayFromObj(objResultPtr, &start);
@@ -3119,7 +3119,7 @@ TclStringCat(
*/
if (TclIsPureByteArray(objPtr)) {
- size_t more;
+ size_t more = 0;
unsigned char *src = TclGetByteArrayFromObj(objPtr, &more);
memcpy(dst, src, more);
dst += more;
@@ -3264,7 +3264,7 @@ TclStringCmp(
{
char *s1, *s2;
int empty, match;
- size_t length, s1len, s2len;
+ size_t length, s1len = 0, s2len = 0;
memCmpFn_t memCmpFn;
if ((reqlength == 0) || (value1Ptr == value2Ptr)) {
@@ -3445,7 +3445,7 @@ TclStringFirst(
Tcl_Obj *haystack,
size_t start)
{
- size_t lh, ln = Tcl_GetCharLength(needle);
+ size_t lh = 0, ln = Tcl_GetCharLength(needle);
if (start == TCL_AUTO_LENGTH) {
start = 0;
@@ -3549,7 +3549,7 @@ TclStringLast(
Tcl_Obj *haystack,
size_t last)
{
- size_t lh, ln = Tcl_GetCharLength(needle);
+ size_t lh = 0, ln = Tcl_GetCharLength(needle);
if (ln == 0) {
/*
@@ -3659,7 +3659,7 @@ TclStringReverse(
int inPlace = flags & TCL_STRING_IN_PLACE;
if (TclIsPureByteArray(objPtr)) {
- size_t numBytes;
+ size_t numBytes = 0;
unsigned char *from = TclGetByteArrayFromObj(objPtr, &numBytes);
if (!inPlace || Tcl_IsShared(objPtr)) {
@@ -3808,7 +3808,7 @@ TclStringReplace(
*/
if (TclIsPureByteArray(objPtr)) {
- size_t numBytes;
+ size_t numBytes = 0;
unsigned char *bytes = TclGetByteArrayFromObj(objPtr, &numBytes);
if (insertPtr == NULL) {
@@ -3831,7 +3831,7 @@ TclStringReplace(
}
if (TclIsPureByteArray(insertPtr)) {
- size_t newBytes;
+ size_t newBytes = 0;
unsigned char *iBytes
= TclGetByteArrayFromObj(insertPtr, &newBytes);
diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c
index 57bf041..37d0e80 100644
--- a/generic/tclStubInit.c
+++ b/generic/tclStubInit.c
@@ -51,6 +51,7 @@
#undef TclSockMinimumBuffers
#undef Tcl_SetIntObj
#undef TclStaticPackage
+#undef Tcl_BackgroundError
#define TclStaticPackage Tcl_StaticPackage
#ifdef TCL_MEM_DEBUG
diff --git a/generic/tclUtf.c b/generic/tclUtf.c
index 0fdd8a5..8c0a5b7 100644
--- a/generic/tclUtf.c
+++ b/generic/tclUtf.c
@@ -2006,13 +2006,13 @@ Tcl_UniCharCaseMatch(
Tcl_UniChar startChar, endChar;
uniPattern++;
- ch1 = (nocase ? Tcl_UniCharToLower(*uniStr) : *uniStr);
+ ch1 = (nocase ? (Tcl_UniChar)Tcl_UniCharToLower(*uniStr) : *uniStr);
uniStr++;
while (1) {
if ((*uniPattern == ']') || (*uniPattern == 0)) {
return 0;
}
- startChar = (nocase ? Tcl_UniCharToLower(*uniPattern)
+ startChar = (nocase ? (Tcl_UniChar)Tcl_UniCharToLower(*uniPattern)
: *uniPattern);
uniPattern++;
if (*uniPattern == '-') {
@@ -2020,7 +2020,7 @@ Tcl_UniCharCaseMatch(
if (*uniPattern == 0) {
return 0;
}
- endChar = (nocase ? Tcl_UniCharToLower(*uniPattern)
+ endChar = (nocase ? (Tcl_UniChar)Tcl_UniCharToLower(*uniPattern)
: *uniPattern);
uniPattern++;
if (((startChar <= ch1) && (ch1 <= endChar))
@@ -2199,20 +2199,20 @@ TclUniCharMatch(
Tcl_UniChar ch1, startChar, endChar;
pattern++;
- ch1 = (nocase ? Tcl_UniCharToLower(*string) : *string);
+ ch1 = (nocase ? (Tcl_UniChar)Tcl_UniCharToLower(*string) : *string);
string++;
while (1) {
if ((*pattern == ']') || (pattern == patternEnd)) {
return 0;
}
- startChar = (nocase ? Tcl_UniCharToLower(*pattern) : *pattern);
+ startChar = (nocase ? (Tcl_UniChar)Tcl_UniCharToLower(*pattern) : *pattern);
pattern++;
if (*pattern == '-') {
pattern++;
if (pattern == patternEnd) {
return 0;
}
- endChar = (nocase ? Tcl_UniCharToLower(*pattern)
+ endChar = (nocase ? (Tcl_UniChar)Tcl_UniCharToLower(*pattern)
: *pattern);
pattern++;
if (((startChar <= ch1) && (ch1 <= endChar))
diff --git a/generic/tclUtil.c b/generic/tclUtil.c
index 77546e9..d13e3dc 100644
--- a/generic/tclUtil.c
+++ b/generic/tclUtil.c
@@ -2238,7 +2238,7 @@ Tcl_StringCaseMatch(
if (nocase) {
while (*str) {
charLen = TclUtfToUniChar(str, &ch1);
- if (ch2==ch1 || ch2==Tcl_UniCharToLower(ch1)) {
+ if (ch2==ch1 || ch2==(Tcl_UniChar)Tcl_UniCharToLower(ch1)) {
break;
}
str += charLen;
@@ -2586,7 +2586,7 @@ TclStringMatchObj(
* 0. */
{
int match;
- size_t length, plen;
+ size_t length = 0, plen = 0;
/*
* Promote based on the type of incoming object.
diff --git a/generic/tclZlib.c b/generic/tclZlib.c
index 33ab2e5..94cf9e8 100644
--- a/generic/tclZlib.c
+++ b/generic/tclZlib.c
@@ -591,7 +591,7 @@ SetInflateDictionary(
Tcl_Obj *compDictObj)
{
if (compDictObj != NULL) {
- size_t length;
+ size_t length = 0;
unsigned char *bytes = TclGetByteArrayFromObj(compDictObj, &length);
return inflateSetDictionary(strm, bytes, length);
@@ -605,7 +605,7 @@ SetDeflateDictionary(
Tcl_Obj *compDictObj)
{
if (compDictObj != NULL) {
- size_t length;
+ size_t length = 0;
unsigned char *bytes = TclGetByteArrayFromObj(compDictObj, &length);
return deflateSetDictionary(strm, bytes, length);
@@ -1190,7 +1190,7 @@ Tcl_ZlibStreamPut(
ZlibStreamHandle *zshPtr = (ZlibStreamHandle *) zshandle;
char *dataTmp = NULL;
int e;
- size_t size, outSize, toStore;
+ size_t size = 0, outSize, toStore;
if (zshPtr->streamEnd) {
if (zshPtr->interp) {
@@ -1314,10 +1314,10 @@ Tcl_ZlibStreamGet(
{
ZlibStreamHandle *zshPtr = (ZlibStreamHandle *) zshandle;
int e, i, listLen;
- size_t itemLen, dataPos = 0;
+ size_t itemLen = 0, dataPos = 0;
Tcl_Obj *itemObj;
unsigned char *dataPtr, *itemPtr;
- size_t existing;
+ size_t existing = 0;
/*
* Getting beyond the of stream, just return empty string.
@@ -1929,7 +1929,7 @@ ZlibCmd(
Tcl_Obj *const objv[])
{
int command, i, option, level = -1;
- size_t dlen, start, buffersize = 0;
+ size_t dlen = 0, start, buffersize = 0;
Tcl_WideInt wideLen;
Byte *data;
Tcl_Obj *headerDictObj;
@@ -2740,7 +2740,7 @@ ZlibStreamAddCmd(
*/
if (compDictObj != NULL) {
- size_t len;
+ size_t len = 0;
(void) TclGetByteArrayFromObj(compDictObj, &len);
if (len == 0) {
@@ -2844,7 +2844,7 @@ ZlibStreamPutCmd(
*/
if (compDictObj != NULL) {
- size_t len;
+ size_t len = 0;
(void) TclGetByteArrayFromObj(compDictObj, &len);
if (len == 0) {
diff --git a/tests/encoding.test b/tests/encoding.test
index ab60617..4736928 100644
--- a/tests/encoding.test
+++ b/tests/encoding.test
@@ -36,7 +36,6 @@ proc runtests {} {
testConstraint testencoding [llength [info commands testencoding]]
testConstraint testbytestring [llength [info commands testbytestring]]
testConstraint teststringbytes [llength [info commands teststringbytes]]
-testConstraint tip389 [expr {[string length \U010000] == 2}]
testConstraint exec [llength [info commands exec]]
testConstraint testgetencpath [llength [info commands testgetencpath]]
@@ -323,16 +322,16 @@ test encoding-15.3 {UtfToUtfProc null character input} teststringbytes {
set z
} c080
-test encoding-16.1 {UnicodeToUtfProc} -constraints tip389 -body {
+test encoding-16.1 {UnicodeToUtfProc} -body {
set val [encoding convertfrom unicode NN]
list $val [format %x [scan $val %c]]
} -result "\u4e4e 4e4e"
-test encoding-16.2 {UnicodeToUtfProc} -constraints tip389 -body {
+test encoding-16.2 {UnicodeToUtfProc} -body {
set val [encoding convertfrom unicode "\xd8\xd8\xdc\xdc"]
list $val [format %x [scan $val %c]]
} -result "\U460dc 460dc"
-test encoding-17.1 {UtfToUnicodeProc} -constraints tip389 -body {
+test encoding-17.1 {UtfToUnicodeProc} -body {
encoding convertto unicode "\U460dc"
} -result "\xd8\xd8\xdc\xdc"
diff --git a/win/tclWinFile.c b/win/tclWinFile.c
index 3910f3d..aba0f04 100644
--- a/win/tclWinFile.c
+++ b/win/tclWinFile.c
@@ -913,7 +913,7 @@ TclpMatchInDirectory(
DWORD attr;
WIN32_FILE_ATTRIBUTE_DATA data;
- size_t length;
+ size_t length = 0;
const char *str = TclGetStringFromObj(norm, &length);
native = Tcl_FSGetNativePath(pathPtr);
@@ -1444,15 +1444,13 @@ TclpGetUserHome(
}
Tcl_DStringFree(&ds);
} else {
- Tcl_DStringInit(&ds);
- wName = Tcl_UtfToUniCharDString(domain + 1, -1, &ds);
+ wName = Tcl_WinUtfToTChar(domain + 1, -1, &ds);
rc = NetGetDCName(NULL, wName, (LPBYTE *) &wDomain);
Tcl_DStringFree(&ds);
nameLen = domain - name;
}
if (rc == 0) {
- Tcl_DStringInit(&ds);
- wName = Tcl_UtfToUniCharDString(name, nameLen, &ds);
+ wName = Tcl_WinUtfToTChar(name, nameLen, &ds);
while (NetUserGetInfo(wDomain, wName, 1, (LPBYTE *) &uiPtr) != 0) {
/*
* user does not exists - if domain was not specified,
@@ -1470,19 +1468,19 @@ TclpGetUserHome(
wHomeDir = uiPtr->usri1_home_dir;
if ((wHomeDir != NULL) && (wHomeDir[0] != L'\0')) {
size = lstrlenW(wHomeDir);
- Tcl_UniCharToUtfDString(wHomeDir, size, bufferPtr);
+ Tcl_WinTCharToUtf((TCHAR *) wHomeDir, size * sizeof(WCHAR), bufferPtr);
} else {
/*
* User exists but has no home dir. Return
* "{GetProfilesDirectory}/<user>".
*/
GetProfilesDirectoryW(buf, &size);
- Tcl_UniCharToUtfDString(buf, size-1, bufferPtr);
+ Tcl_WinTCharToUtf(buf, (size-1) * sizeof(WCHAR), bufferPtr);
Tcl_DStringAppend(bufferPtr, "/", 1);
Tcl_DStringAppend(bufferPtr, name, nameLen);
}
result = Tcl_DStringValue(bufferPtr);
- /* be sure we returns normalized path */
+ /* be sure we return normalized path */
for (i = 0; i < size; ++i){
if (result[i] == '\\') result[i] = '/';
}