diff options
| author | dgp <dgp@users.sourceforge.net> | 2017-03-29 14:35:44 (GMT) |
|---|---|---|
| committer | dgp <dgp@users.sourceforge.net> | 2017-03-29 14:35:44 (GMT) |
| commit | d236581f7b07310302ded4d2992f137466270361 (patch) | |
| tree | e0a0fb2e4489e3a89687178c1a504b1918bdc164 /generic/tclStringObj.c | |
| parent | 555cf46f2a597a964fcbc80825343d8e281956d3 (diff) | |
| parent | efbb62b5bda42142f446bb8064d377473801c140 (diff) | |
| download | tcl-d236581f7b07310302ded4d2992f137466270361.zip tcl-d236581f7b07310302ded4d2992f137466270361.tar.gz tcl-d236581f7b07310302ded4d2992f137466270361.tar.bz2 | |
merge trunk
Diffstat (limited to 'generic/tclStringObj.c')
| -rw-r--r-- | generic/tclStringObj.c | 39 |
1 files changed, 33 insertions, 6 deletions
diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 7dc27a4..d399094 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -1865,11 +1865,22 @@ Tcl_AppendFormatToObj( useWide = 1; #endif } - } else if ((ch == 'I') && (format[1] == '6') && (format[2] == '4')) { - format += (step + 2); + } else if (ch == 'I') { + if ((format[1] == '6') && (format[2] == '4')) { + format += (step + 2); + step = Tcl_UtfToUniChar(format, &ch); + useBig = 1; + } else if ((format[1] == '3') && (format[2] == '2')) { + format += (step + 2); + step = Tcl_UtfToUniChar(format, &ch); + } else { + format += step; + step = Tcl_UtfToUniChar(format, &ch); + } + } else if ((ch == 't') || (ch == 'z')) { + format += step; step = Tcl_UtfToUniChar(format, &ch); - useBig = 1; - } else if (ch == 'L') { + } else if ((ch == 'q') ||(ch == 'j')) { format += step; step = Tcl_UtfToUniChar(format, &ch); useBig = 1; @@ -1925,6 +1936,7 @@ Tcl_AppendFormatToObj( } case 'd': case 'o': + case 'p': case 'x': case 'X': case 'b': { @@ -1993,13 +2005,14 @@ Tcl_AppendFormatToObj( segmentLimit -= 1; } - if (gotHash) { + if (gotHash || (ch == 'p')) { switch (ch) { case 'o': Tcl_AppendToObj(segment, "0", 1); segmentLimit -= 1; precision--; break; + case 'p': case 'x': case 'X': Tcl_AppendToObj(segment, "0x", 2); @@ -2078,6 +2091,7 @@ Tcl_AppendFormatToObj( case 'u': case 'o': + case 'p': case 'x': case 'X': case 'b': { @@ -2467,6 +2481,7 @@ AppendPrintfToObjVA( case 'u': case 'd': case 'o': + case 'p': case 'x': case 'X': seekingConversion = 0; @@ -2517,7 +2532,15 @@ AppendPrintfToObjVA( ++size; p++; break; - case 'L': + case 't': + case 'z': + if (sizeof(size_t) == sizeof(Tcl_WideInt)) { + size = 2; + } + p++; + break; + case 'j': + case 'q': size = 2; p++; break; @@ -2525,6 +2548,10 @@ AppendPrintfToObjVA( if (p[1]=='6' && p[2]=='4') { p += 2; size = 2; + } else if (p[1]=='3' && p[2]=='2') { + p += 2; + } else if (sizeof(size_t) == sizeof(Tcl_WideInt)) { + size = 2; } p++; break; |
