aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/intrinsics/string_intrinsics_inc.c
diff options
context:
space:
mode:
Diffstat (limited to 'libgfortran/intrinsics/string_intrinsics_inc.c')
-rw-r--r--libgfortran/intrinsics/string_intrinsics_inc.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/libgfortran/intrinsics/string_intrinsics_inc.c b/libgfortran/intrinsics/string_intrinsics_inc.c
index 0da5130..f514f4c 100644
--- a/libgfortran/intrinsics/string_intrinsics_inc.c
+++ b/libgfortran/intrinsics/string_intrinsics_inc.c
@@ -224,15 +224,14 @@ string_len_trim (gfc_charlen_type len, const CHARTYPE *s)
break;
}
}
+
+ /* Now continue for the last characters with naive approach below. */
+ assert (i >= 0);
}
/* Simply look for the first non-blank character. */
- while (s[i] == ' ')
- {
- if (i == 0)
- return 0;
- --i;
- }
+ while (i >= 0 && s[i] == ' ')
+ --i;
return i + 1;
}
@@ -328,12 +327,12 @@ string_scan (gfc_charlen_type slen, const CHARTYPE *str,
if (back)
{
- for (i = slen; i != 0; i--)
+ for (i = slen - 1; i >= 0; i--)
{
for (j = 0; j < setlen; j++)
{
- if (str[i - 1] == set[j])
- return i;
+ if (str[i] == set[j])
+ return (i + 1);
}
}
}