diff options
| author | griffin <briang42@easystreet.net> | 2022-09-28 16:53:47 (GMT) |
|---|---|---|
| committer | griffin <briang42@easystreet.net> | 2022-09-28 16:53:47 (GMT) |
| commit | f67437d6f3387995beea7486af82b8da4f04a163 (patch) | |
| tree | eb842b526877e14cc565ff10b6191684065592d7 | |
| parent | 6cd7c9e3c209226e98b0b1995cbf90026d1385ff (diff) | |
| parent | 7694cd7bef6d69dbd7d91d338f3626d9e6875e95 (diff) | |
| download | tcl-f67437d6f3387995beea7486af82b8da4f04a163.zip tcl-f67437d6f3387995beea7486af82b8da4f04a163.tar.gz tcl-f67437d6f3387995beea7486af82b8da4f04a163.tar.bz2 | |
Fix bug-9933cc4d88 - not an error in 9
| -rwxr-xr-x | generic/tclArithSeries.c | 12 | ||||
| -rw-r--r-- | tests/lseq.test | 5 |
2 files changed, 12 insertions, 5 deletions
diff --git a/generic/tclArithSeries.c b/generic/tclArithSeries.c index 937e629..1302780 100755 --- a/generic/tclArithSeries.c +++ b/generic/tclArithSeries.c @@ -282,7 +282,8 @@ TclNewArithSeriesObj( Tcl_Obj *lenObj) /* Number of elements */ { double dstart, dend, dstep; - Tcl_WideInt start, end, step, len; + Tcl_WideInt start, end, step; + Tcl_WideInt len; if (startObj) { assignNumber(useDoubles, &start, &dstart, startObj); @@ -306,7 +307,12 @@ TclNewArithSeriesObj( assignNumber(useDoubles, &end, &dend, endObj); } if (lenObj) { - Tcl_GetWideIntFromObj(NULL, lenObj, &len); + int tcl_number_type; + Tcl_WideInt *valuePtr; + if (TclGetNumberFromObj(interp, lenObj, (ClientData*)&valuePtr, &tcl_number_type) != TCL_OK) { + return TCL_ERROR; + } + len = *valuePtr; } if (startObj && endObj) { @@ -339,7 +345,7 @@ TclNewArithSeriesObj( } } - if (len < 0 || (Tcl_WideUInt)len > ListSizeT_MAX) { + if (TCL_MAJOR_VERSION < 9 && len > ListSizeT_MAX) { Tcl_SetObjResult( interp, Tcl_NewStringObj("max length of a Tcl list exceeded", -1)); diff --git a/tests/lseq.test b/tests/lseq.test index 916229d..48adfa0 100644 --- a/tests/lseq.test +++ b/tests/lseq.test @@ -474,7 +474,7 @@ test lseq-4.3 {TIP examples} knownBug { # # Ticket 9933cc4d88697f05976accebd31c1e3ba6efe9c6 - lseq corner case -test lseq-4.4 {lseq corner case} -constraints knownBug -body { +test lseq-4.4 {lseq corner case} -body { set tcmd { set res {} set s [catch {lindex [lseq 10 100] 0} e] @@ -489,7 +489,8 @@ test lseq-4.4 {lseq corner case} -constraints knownBug -body { lappend res $s $e } eval $tcmd -} -result {0 10 1 {max length of a Tcl list exceeded} 1 {max length of a Tcl list exceeded} 0 10 0 2147483638} +} -result {0 10 0 10 0 9223372036854774991 0 10 0 2147483638} +# {0 10 1 {max length of a Tcl list exceeded} 1 {max length of a Tcl list exceeded} 0 10 0 2147483638} # cleanup |
