Skip to content

Commit b2a2149

Browse files
committed
Fixed improperly assumed short circuiting.
The code stdlib_sorting_sort.f90 was failing on some systems becasue it improperlly assumed short circuiting do while( i >= 0 .and. array(i) > key ) should have been do while( i >= 0 ) if (array(i) <= key ) exit [ticket: X]
1 parent d84da28 commit b2a2149

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

src/stdlib_sorting_sort.fypp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,8 @@ contains
170170
do j=1_int_size, size(array, kind=int_size)-1
171171
key = array(j)
172172
i = j - 1
173-
do while( i >= 0 .and. array(i) > key )
173+
do while( i >= 0 )
174+
if ( array(i) <= key ) exit
174175
array(i+1) = array(i)
175176
i = i - 1
176177
end do
@@ -342,7 +343,8 @@ contains
342343
do j=1_int_size, size(array, kind=int_size)-1
343344
key = array(j)
344345
i = j - 1
345-
do while( i >= 0 .and. array(i) > key )
346+
do while( i >= 0 )
347+
if ( array(i) <= key ) exit
346348
array(i+1) = array(i)
347349
i = i - 1
348350
end do
@@ -509,7 +511,8 @@ contains
509511
do j=1_int_size, size(array, kind=int_size)-1
510512
key = array(j)
511513
i = j - 1
512-
do while( i >= 0 .and. array(i) > key )
514+
do while( i >= 0 )
515+
if ( array(i) <= key ) exit
513516
array(i+1) = array(i)
514517
i = i - 1
515518
end do
@@ -673,7 +676,8 @@ contains
673676
do j=1_int_size, size(array, kind=int_size)-1
674677
key = array(j)
675678
i = j - 1
676-
do while( i >= 0 .and. array(i) > key )
679+
do while( i >= 0 )
680+
if ( array(i) <= key ) exit
677681
array(i+1) = array(i)
678682
i = i - 1
679683
end do

0 commit comments

Comments
 (0)