Skip to content

Commit

Permalink
change left_reals character var to be deferred length to prevent reco…
Browse files Browse the repository at this point in the history
…rd overflow
  • Loading branch information
alperaltuntas committed Nov 19, 2020
1 parent 165b1b2 commit d5c87fc
Showing 1 changed file with 8 additions and 9 deletions.
17 changes: 8 additions & 9 deletions src/framework/MOM_string_functions.F90
Original file line number Diff line number Diff line change
Expand Up @@ -142,13 +142,13 @@ function left_reals(r,sep)
real, intent(in) :: r(:) !< The array of real variables to convert to a string
character(len=*), optional, intent(in) :: sep !< The separator between
!! successive values, by default it is ', '.
character(len=1320) :: left_reals !< The output string
character(len=:), allocatable :: left_reals !< The output string

integer :: j, n, b, ns
integer :: j, n, ns
logical :: doWrite
character(len=10) :: separator

n=1 ; doWrite=.true. ; left_reals='' ; b=1
n=1 ; doWrite=.true. ; left_reals=''
if (present(sep)) then
separator=sep ; ns=len(sep)
else
Expand All @@ -163,16 +163,15 @@ function left_reals(r,sep)
endif
endif
if (doWrite) then
if (b>1) then ! Write separator if a number has already been written
write(left_reals(b:),'(A)') separator
b=b+ns
if (len(left_reals)>0) then ! Write separator if a number has already been written
left_reals = left_reals // separator(1:ns)
endif
if (n>1) then
write(left_reals(b:),'(A,"*",A)') trim(left_int(n)),trim(left_real(r(j)))
left_reals = left_reals // trim(left_int(n)) // "*" // trim(left_real(r(j)))
else
write(left_reals(b:),'(A)') trim(left_real(r(j)))
left_reals = left_reals // trim(left_real(r(j)))
endif
n=1 ; b=len_trim(left_reals)+1
n=1
endif
enddo
end function left_reals
Expand Down

0 comments on commit d5c87fc

Please sign in to comment.