summaryrefslogtreecommitdiffstats
path: root/generic/tclScan.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2019-11-07 15:39:37 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2019-11-07 15:39:37 (GMT)
commitd6d77a73bef59053e103b7d28390ade0e651a8cc (patch)
tree2b5525e94553d4e1348506e2c741cf863d9e8fcb /generic/tclScan.c
parent9348f2301275b473b59425310f3ac4beb7e545c0 (diff)
parent22c56e716cf046ee48897490b5b2264d8c9cb328 (diff)
downloadtcl-d6d77a73bef59053e103b7d28390ade0e651a8cc.zip
tcl-d6d77a73bef59053e103b7d28390ade0e651a8cc.tar.gz
tcl-d6d77a73bef59053e103b7d28390ade0e651a8cc.tar.bz2
Merge 8.7
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);
}