diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2019-03-08 22:51:16 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2019-03-08 22:51:16 (GMT) |
commit | e6a53eb44dab26c44e01f4620467c2c5ae0f27e5 (patch) | |
tree | 59277fc50a99e395168027e1ffa8bbe0be18a7cb | |
parent | e30b8a9185f7d16573e849b3df2ec1d1791439ea (diff) | |
parent | 2b821c69deba46a4f4634dbbfa6b5b34b6036f9c (diff) | |
download | tcl-e6a53eb44dab26c44e01f4620467c2c5ae0f27e5.zip tcl-e6a53eb44dab26c44e01f4620467c2c5ae0f27e5.tar.gz tcl-e6a53eb44dab26c44e01f4620467c2c5ae0f27e5.tar.bz2 |
Merge 8.7
-rw-r--r-- | .travis.yml | 31 | ||||
-rw-r--r-- | generic/regcomp.c | 9 | ||||
-rw-r--r-- | generic/regexec.c | 8 | ||||
-rw-r--r-- | generic/tclBinary.c | 4 | ||||
-rw-r--r-- | generic/tclCmdAH.c | 2 | ||||
-rw-r--r-- | generic/tclConfig.c | 2 | ||||
-rw-r--r-- | generic/tclEncoding.c | 49 | ||||
-rw-r--r-- | generic/tclExecute.c | 2 | ||||
-rw-r--r-- | generic/tclIO.c | 4 | ||||
-rw-r--r-- | generic/tclIOGT.c | 2 | ||||
-rw-r--r-- | generic/tclIORChan.c | 2 | ||||
-rw-r--r-- | generic/tclIORTrans.c | 16 | ||||
-rw-r--r-- | generic/tclMain.c | 17 | ||||
-rw-r--r-- | generic/tclStringObj.c | 28 | ||||
-rw-r--r-- | generic/tclStubInit.c | 1 | ||||
-rw-r--r-- | generic/tclUtf.c | 12 | ||||
-rw-r--r-- | generic/tclUtil.c | 4 | ||||
-rw-r--r-- | generic/tclZlib.c | 16 | ||||
-rw-r--r-- | tests/encoding.test | 7 | ||||
-rw-r--r-- | win/tclWinFile.c | 14 |
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®_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] = '/'; } |