From f85ac4038c688dad3938bced1d33154fb9ee82f2 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 25 Feb 2013 10:17:46 -0500 Subject: [PATCH] Fix infinite loop bug in error module. Closes #150. --- src/error.F90 | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/error.F90 b/src/error.F90 index df0dc83a1..ec8b9f2fa 100644 --- a/src/error.F90 +++ b/src/error.F90 @@ -50,9 +50,17 @@ contains i_end = i_start + index(message(i_start+1:i_start+line_wrap-indent+1), & ' ', BACK=.true.) - ! Write up to last space - write(OUTPUT_UNIT, fmt='(A/A)', advance='no') & - message(i_start+1:i_end-1), repeat(' ', indent) + if (i_end == i_start) then + ! This is a special case where there is no space + i_end = i_start + line_wrap - indent + 1 + write(ERROR_UNIT, fmt='(A/A)', advance='no') & + message(i_start+1:i_end-1), repeat(' ', indent) + i_end = i_end - 1 + else + ! Write up to last space + write(OUTPUT_UNIT, fmt='(A/A)', advance='no') & + message(i_start+1:i_end-1), repeat(' ', indent) + end if ! Advance starting position i_start = i_end @@ -109,9 +117,17 @@ contains i_end = i_start + index(message(i_start+1:i_start+line_wrap-indent+1), & ' ', BACK=.true.) - ! Write up to last space - write(ERROR_UNIT, fmt='(A/A)', advance='no') & - message(i_start+1:i_end-1), repeat(' ', indent) + if (i_end == i_start) then + ! This is a special case where there is no space + i_end = i_start + line_wrap - indent + 1 + write(ERROR_UNIT, fmt='(A/A)', advance='no') & + message(i_start+1:i_end-1), repeat(' ', indent) + i_end = i_end - 1 + else + ! Write up to last space + write(ERROR_UNIT, fmt='(A/A)', advance='no') & + message(i_start+1:i_end-1), repeat(' ', indent) + end if ! Advance starting position i_start = i_end