diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2018-02-06 20:54:35 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2018-02-06 20:54:35 (GMT) |
commit | 6ce7eb980b9fa656a7790a70bbe801bce96bc6ee (patch) | |
tree | bded056cd5bac438f522d348a97e41065dff5adb /generic/tclStrToD.c | |
parent | 6bd80d67e4ea201ee43965ee6edaa28fe884f406 (diff) | |
parent | 185cdc39c6ed70ecf07f8427be94091fffc05238 (diff) | |
download | tcl-6ce7eb980b9fa656a7790a70bbe801bce96bc6ee.zip tcl-6ce7eb980b9fa656a7790a70bbe801bce96bc6ee.tar.gz tcl-6ce7eb980b9fa656a7790a70bbe801bce96bc6ee.tar.bz2 |
merge core-8-branch
Diffstat (limited to 'generic/tclStrToD.c')
-rw-r--r--[-rwxr-xr-x] | generic/tclStrToD.c | 48 |
1 files changed, 10 insertions, 38 deletions
diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c index a26c361..5cf6969 100755..100644 --- a/generic/tclStrToD.c +++ b/generic/tclStrToD.c @@ -1208,32 +1208,18 @@ TclParseNumber( } } if (!octalSignificandOverflow) { - if (octalSignificandWide > - (Tcl_WideUInt)(((~(unsigned long)0) >> 1) + signum)) { -#ifndef TCL_WIDE_INT_IS_LONG - if (octalSignificandWide <= (MOST_BITS + signum)) { - objPtr->typePtr = &tclWideIntType; - if (signum) { - objPtr->internalRep.wideValue = - - (Tcl_WideInt) octalSignificandWide; - } else { - objPtr->internalRep.wideValue = - (Tcl_WideInt) octalSignificandWide; - } - break; - } -#endif + if (octalSignificandWide > (MOST_BITS + signum)) { TclInitBignumFromWideUInt(&octalSignificandBig, octalSignificandWide); octalSignificandOverflow = 1; } else { objPtr->typePtr = &tclIntType; if (signum) { - objPtr->internalRep.longValue = - - (long) octalSignificandWide; + objPtr->internalRep.wideValue = + - (Tcl_WideInt) octalSignificandWide; } else { - objPtr->internalRep.longValue = - (long) octalSignificandWide; + objPtr->internalRep.wideValue = + (Tcl_WideInt) octalSignificandWide; } } } @@ -1255,32 +1241,18 @@ TclParseNumber( } returnInteger: if (!significandOverflow) { - if (significandWide > - (Tcl_WideUInt)(((~(unsigned long)0) >> 1) + signum)) { -#ifndef TCL_WIDE_INT_IS_LONG - if (significandWide <= MOST_BITS+signum) { - objPtr->typePtr = &tclWideIntType; - if (signum) { - objPtr->internalRep.wideValue = - - (Tcl_WideInt) significandWide; - } else { - objPtr->internalRep.wideValue = - (Tcl_WideInt) significandWide; - } - break; - } -#endif + if (significandWide > MOST_BITS+signum) { TclInitBignumFromWideUInt(&significandBig, significandWide); significandOverflow = 1; } else { objPtr->typePtr = &tclIntType; if (signum) { - objPtr->internalRep.longValue = - - (long) significandWide; + objPtr->internalRep.wideValue = + - (Tcl_WideInt) significandWide; } else { - objPtr->internalRep.longValue = - (long) significandWide; + objPtr->internalRep.wideValue = + (Tcl_WideInt) significandWide; } } } |