@@ -642,23 +642,27 @@ subroutine insert_before_stringlist_int_impl( list, idxn, slist )
642642 type (stringlist_type), intent (in ) :: slist
643643
644644 integer :: i
645- integer :: work_idxn, idxnew
645+ integer :: work_idxn, inew
646646 integer :: pre_length, post_length
647647
648- work_idxn = idxn
649648 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
652651
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 ()
657654
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
662666
663667 end subroutine insert_before_stringlist_int_impl
664668
0 commit comments