summaryrefslogtreecommitdiffstats
path: root/generic/tclScan.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclScan.c')
-rw-r--r--generic/tclScan.c12
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);
}