summaryrefslogtreecommitdiffstats
path: root/generic/tclStringObj.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2017-04-05 09:09:20 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2017-04-05 09:09:20 (GMT)
commit42f3b8e10cbe3342ebc2ca136374b4c5377dc54c (patch)
treebc483abe6a64177bc46c4a717b7a698fa285ebd2 /generic/tclStringObj.c
parentc4205c013895144b86276219a88a9bb64878295f (diff)
parent224849c744f0f6ceb853162afd318b858835850c (diff)
downloadtcl-42f3b8e10cbe3342ebc2ca136374b4c5377dc54c.zip
tcl-42f3b8e10cbe3342ebc2ca136374b4c5377dc54c.tar.gz
tcl-42f3b8e10cbe3342ebc2ca136374b4c5377dc54c.tar.bz2
Fix [4b12ccb3363e81b132e8dbe12aeec596102be1a8|4b12ccb336]: format/scan %llu doesn't work. Also added new test-cases showing the expected behavior.
Diffstat (limited to 'generic/tclStringObj.c')
-rw-r--r--generic/tclStringObj.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c
index 560c169..e51b98a 100644
--- a/generic/tclStringObj.c
+++ b/generic/tclStringObj.c
@@ -1939,11 +1939,6 @@ Tcl_AppendFormatToObj(
}
case 'u':
- if (useBig) {
- msg = "unsigned bignum format is invalid";
- errCode = "BADUNSIGNED";
- goto errorMsg;
- }
case 'd':
case 'o':
case 'p':
@@ -1967,6 +1962,15 @@ Tcl_AppendFormatToObj(
goto error;
}
isNegative = (mp_cmp_d(&big, 0) == MP_LT);
+ if (ch == 'u') {
+ if (isNegative) {
+ msg = "unsigned bignum format is invalid";
+ errCode = "BADUNSIGNED";
+ goto errorMsg;
+ } else {
+ ch = 'd';
+ }
+ }
#ifndef TCL_WIDE_INT_IS_LONG
} else if (useWide) {
if (Tcl_GetWideIntFromObj(NULL, segment, &w) != TCL_OK) {