Skip to content

Commit 71a9463

Browse files
committed
fix more version_t bound errors
1 parent bcba0e1 commit 71a9463

File tree

1 file changed

+25
-15
lines changed

1 file changed

+25
-15
lines changed

src/fpm/versioning.f90

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -227,17 +227,15 @@ pure function s(self) result(string)
227227
character(len=buffersize) :: buffer
228228
integer :: ii
229229

230-
if (allocated(self%num)) then
231-
do ii = 1, size(self%num)
232-
if (allocated(string)) then
233-
write(buffer, '(".", i0)') self%num(ii)
234-
string = string // trim(buffer)
235-
else
236-
write(buffer, '(i0)') self%num(ii)
237-
string = trim(buffer)
238-
end if
239-
end do
240-
endif
230+
do ii = 1, ndigits(self)
231+
if (allocated(string)) then
232+
write(buffer, '(".", i0)') self%num(ii)
233+
string = string // trim(buffer)
234+
else
235+
write(buffer, '(i0)') self%num(ii)
236+
string = trim(buffer)
237+
end if
238+
end do
241239

242240
if (.not.allocated(string)) then
243241
string = '0'
@@ -298,18 +296,18 @@ elemental function greater(lhs, rhs) result(is_greater)
298296
!> First version is greater
299297
logical :: is_greater
300298

301-
integer :: ii
299+
integer :: ii, lhs_size, rhs_size
302300

303-
do ii = 1, min(size(lhs%num), size(rhs%num))
301+
do ii = 1, min(ndigits(lhs),ndigits(rhs))
304302
if (lhs%num(ii) /= rhs%num(ii)) then
305303
is_greater = lhs%num(ii) > rhs%num(ii)
306304
return
307305
end if
308306
end do
309307

310-
is_greater = size(lhs%num) > size(rhs%num)
308+
is_greater = ndigits(lhs) > ndigits(rhs)
311309
if (is_greater) then
312-
do ii = size(rhs%num) + 1, size(lhs%num)
310+
do ii = ndigits(rhs) + 1, ndigits(lhs)
313311
is_greater = lhs%num(ii) > 0
314312
if (is_greater) return
315313
end do
@@ -392,5 +390,17 @@ elemental function match(lhs, rhs)
392390

393391
end function match
394392

393+
!> Number of digits
394+
elemental integer function ndigits(self)
395+
class(version_t), intent(in) :: self
396+
397+
if (allocated(self%num)) then
398+
ndigits = size(self%num)
399+
else
400+
ndigits = 0
401+
end if
402+
403+
end function ndigits
404+
395405

396406
end module fpm_versioning

0 commit comments

Comments
 (0)