diff options
| author | dgp@users.sourceforge.net <dgp> | 2014-12-23 17:46:05 (GMT) |
|---|---|---|
| committer | dgp@users.sourceforge.net <dgp> | 2014-12-23 17:46:05 (GMT) |
| commit | 2201e6a76496ac7ba253481e7d26618d85cde429 (patch) | |
| tree | 2570101eb6a2366cc9fefc11344864e22f6b131f /generic/tclEncoding.c | |
| parent | 0c8d6f5fda8fb777ac700ee3eb67d9982bb0d94c (diff) | |
| download | tcl-2201e6a76496ac7ba253481e7d26618d85cde429.zip tcl-2201e6a76496ac7ba253481e7d26618d85cde429.tar.gz tcl-2201e6a76496ac7ba253481e7d26618d85cde429.tar.bz2 | |
Support TCL_ENCODING_CHAR_LIMIT in the UnicodeToUtfProc driver.
Diffstat (limited to 'generic/tclEncoding.c')
| -rw-r--r-- | generic/tclEncoding.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index f92cabb..0fe224e 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -2408,9 +2408,12 @@ UnicodeToUtfProc( { const char *srcStart, *srcEnd; const char *dstEnd, *dstStart; - int result, numChars; + int result, numChars, charLimit = INT_MAX; Tcl_UniChar ch; + if (flags & TCL_ENCODING_CHAR_LIMIT) { + charLimit = *dstCharsPtr; + } result = TCL_OK; if ((srcLen % sizeof(Tcl_UniChar)) != 0) { result = TCL_CONVERT_MULTIBYTE; @@ -2424,7 +2427,7 @@ UnicodeToUtfProc( dstStart = dst; dstEnd = dst + dstLen - TCL_UTF_MAX; - for (numChars = 0; src < srcEnd; numChars++) { + for (numChars = 0; src < srcEnd && numChars <= charLimit; numChars++) { if (dst > dstEnd) { result = TCL_CONVERT_NOSPACE; break; |
