diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2024-06-19 10:32:39 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2024-06-19 10:32:39 (GMT) |
| commit | c7e60575dde5c9b7ca92fb83bbf61319b17e506c (patch) | |
| tree | 5e90c99c08a69c6b4b862eaa3b455014b4183147 /generic/tclScan.c | |
| parent | ba8a9c512f733da5f0db3055c0a24590c542b9ea (diff) | |
| parent | 96dd069f9fc0b4e987db3a0ee7dde49edd93d3af (diff) | |
| download | tcl-c7e60575dde5c9b7ca92fb83bbf61319b17e506c.zip tcl-c7e60575dde5c9b7ca92fb83bbf61319b17e506c.tar.gz tcl-c7e60575dde5c9b7ca92fb83bbf61319b17e506c.tar.bz2 | |
TIP #697: 32-bit truncation in format and scan (let's gain some time)
Diffstat (limited to 'generic/tclScan.c')
| -rw-r--r-- | generic/tclScan.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/generic/tclScan.c b/generic/tclScan.c index c143efa..48d2bcc 100644 --- a/generic/tclScan.c +++ b/generic/tclScan.c @@ -385,6 +385,10 @@ ValidateFormat( } format += TclUtfToUniChar(format, &ch); break; + case 'L': + flags |= SCAN_BIG; + format += TclUtfToUniChar(format, &ch); + break; case 'l': if (*format == 'l') { flags |= SCAN_BIG; @@ -393,7 +397,6 @@ ValidateFormat( break; } /* FALLTHRU */ - case 'L': case 'j': case 'q': flags |= SCAN_LONGER; @@ -601,7 +604,7 @@ Tcl_ScanObjCmd( const char *format; int numVars, nconversions, totalVars = -1; int objIndex, offset, i, result, code; - long value; + int value; const char *string, *end, *baseString; char op = 0; int underflow = 0; @@ -994,11 +997,11 @@ Tcl_ScanObjCmd( } } } else { - if (TclGetLongFromObj(NULL, objPtr, &value) != TCL_OK) { + if (TclGetIntFromObj(NULL, objPtr, &value) != TCL_OK) { if (TclGetString(objPtr)[0] == '-') { - value = LONG_MIN; + value = INT_MIN; } else { - value = LONG_MAX; + value = INT_MAX; } } if ((flags & SCAN_UNSIGNED) && (value < 0)) { |
