Skip to content

Commit 523dbc6

Browse files
committed
Changed handling of potential integer overflows on reads
Changed handling of potential integer overflows on reads for bits_kind==int64, changing max_digits from 20 to 19. Removed comment that my treatment may not be quite right. Also fixed a typo in an error message. [ticket: X]
1 parent 3235ab4 commit 523dbc6

File tree

3 files changed

+2
-5
lines changed

3 files changed

+2
-5
lines changed

src/stdlib_bitsets.fypp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ module stdlib_bitsets
2727
public :: max_digits, overflow_bits
2828
integer, parameter :: &
2929
max_digits = 10 ! bits_kind == int32
30-
! max_digits = 20 ! bits_kind == int64
30+
! max_digits = 19 ! bits_kind == int64
3131

3232
integer(bits_kind), parameter :: &
3333
overflow_bits = 2_bits_kind**30/5 ! bits_kind == int32
@@ -2128,7 +2128,7 @@ contains
21282128
case( read_failure )
21292129
error stop "A failure occurred in a READ statement."
21302130
case( write_failure )
2131-
error stop "A failure occurRed on a WRITE statement."
2131+
error stop "A failure occurred on a WRITE statement."
21322132
end select
21332133
end if
21342134
end subroutine error_handler

src/stdlib_bitsets_64.fypp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -646,7 +646,6 @@ contains
646646
digits = digits + 1
647647
if ( digits == max_digits .AND. bits > overflow_bits ) &
648648
go to 996
649-
!! May not be quite right
650649
if ( digits > max_digits ) go to 996
651650
bits = bits*10 + iachar( string(pos:pos) ) - ia0
652651
if ( bits < 0 ) go to 996
@@ -779,7 +778,6 @@ contains
779778
digits = digits + 1
780779
if ( digits == max_digits .AND. bits > overflow_bits ) &
781780
go to 996
782-
!! May not be quite right
783781
if ( digits > max_digits ) go to 996
784782
bits = 10*bits + iachar(char) - iachar('0')
785783
if ( bits < 0 ) go to 996

src/stdlib_bitsets_large.fypp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -835,7 +835,6 @@ contains
835835
case(ia0:ia9)
836836
digits = digits + 1
837837
if ( digits == max_digits .AND. bits > overflow_bits ) go to 996
838-
!! May not be quite right
839838
if ( digits > max_digits ) go to 996
840839
bits = bits*10 + iachar( string(pos:pos) ) - ia0
841840
if ( bits < 0 ) go to 996

0 commit comments

Comments
 (0)