diff options
Diffstat (limited to 'generic/tclScan.c')
| -rw-r--r-- | generic/tclScan.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/generic/tclScan.c b/generic/tclScan.c index 24b4374..7a15d78 100644 --- a/generic/tclScan.c +++ b/generic/tclScan.c @@ -581,9 +581,6 @@ Tcl_ScanObjCmd( Tcl_UniChar ch = 0, sch = 0; Tcl_Obj **objs = NULL, *objPtr = NULL; int flags; - char buf[513]; /* Temporary buffer to hold scanned number - * strings before they are passed to - * strtoul. */ (void)dummy; if (objc < 3) { @@ -973,8 +970,13 @@ Tcl_ScanObjCmd( } } if ((flags & SCAN_UNSIGNED) && (value < 0)) { - sprintf(buf, "%lu", value); /* INTL: ISO digit */ - Tcl_SetStringObj(objPtr, buf, -1); +#ifdef TCL_WIDE_INT_IS_LONG + mp_int big; + TclBNInitBignumFromWideUInt(&big, (unsigned long)value); + Tcl_SetBignumObj(objPtr, &big); +#else + TclSetIntObj(objPtr, (unsigned long)value); +#endif } else { TclSetIntObj(objPtr, value); } |
