@@ -642,23 +642,27 @@ subroutine insert_before_stringlist_int_impl( list, idxn, slist )
642
642
type (stringlist_type), intent (in ) :: slist
643
643
644
644
integer :: i
645
- integer :: work_idxn, idxnew
645
+ integer :: work_idxn, inew
646
646
integer :: pre_length, post_length
647
647
648
- work_idxn = idxn
649
648
pre_length = slist% len ()
650
- call insert_before_empty_positions( list, work_idxn, pre_length )
651
- post_length = slist % len ()
649
+ if ( pre_length > 0 ) then
650
+ work_idxn = idxn
652
651
653
- do i = 1 , min ( work_idxn - 1 , pre_length )
654
- idxnew = work_idxn + i - 1
655
- list% stringarray(idxnew) = slist% stringarray(i)
656
- end do
652
+ call insert_before_engine( list, work_idxn, pre_length )
653
+ post_length = slist% len ()
657
654
658
- do i = work_idxn + post_length - pre_length, post_length
659
- idxnew = work_idxn + i - post_length + pre_length - 1
660
- list% stringarray(idxnew) = slist% stringarray(i)
661
- end do
655
+ inew = work_idxn
656
+ do i = 1 , min ( work_idxn - 1 , pre_length )
657
+ list% stringarray(inew) = slist% stringarray(i)
658
+ inew = inew + 1
659
+ end do
660
+
661
+ do i = work_idxn + post_length - pre_length, post_length
662
+ list% stringarray(inew) = slist% stringarray(i)
663
+ inew = inew + 1
664
+ end do
665
+ end if
662
666
663
667
end subroutine insert_before_stringlist_int_impl
664
668
0 commit comments