aboutsummaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
authorBud Davis <bdavis9659@comcast.net>2004-05-13 10:11:02 +0000
committerBud Davis <bdavis@gcc.gnu.org>2004-05-13 10:11:02 +0000
commit92fbb7592bbd3899a7b2ca98b4ac0e9f857fe114 (patch)
tree6b9d1350b0d987f11cd8edd85e5f95c559f990bd /libgfortran
parent014251eae30e30a6cc960f41c939d24ffed00066 (diff)
downloadgcc-92fbb7592bbd3899a7b2ca98b4ac0e9f857fe114.zip
gcc-92fbb7592bbd3899a7b2ca98b4ac0e9f857fe114.tar.gz
gcc-92fbb7592bbd3899a7b2ca98b4ac0e9f857fe114.tar.bz2
re PR libfortran/15204 (ADJUSTR intrinsic accesses corrupted pointer)
PR fortran/15294 * gfortran.fortran-torture/execute/adjustr.f90: New file. * io/intrinsic/string_intrinsics.c(adjustr): rework logic. From-SVN: r81771
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog5
-rw-r--r--libgfortran/intrinsics/string_intrinsics.c5
2 files changed, 7 insertions, 3 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 1f4dd23..b597f52 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,8 @@
+2004-05-13 Bud Davis <bdavis9659@comcast.net>
+
+ PR fortran/15294
+ * io/intrinsic/string_intrinsics.c(adjustr): rework logic.
+
2004-05-06 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
Steven Bosscher <stevenb@suse.de>
diff --git a/libgfortran/intrinsics/string_intrinsics.c b/libgfortran/intrinsics/string_intrinsics.c
index 999807e..2cd07a2 100644
--- a/libgfortran/intrinsics/string_intrinsics.c
+++ b/libgfortran/intrinsics/string_intrinsics.c
@@ -276,12 +276,11 @@ adjustr (char *dest, GFC_INTEGER_4 len, const char *src)
i = len;
while (i > 0 && src[i - 1] == ' ')
- i++;
+ i--;
if (i < len)
- memcpy (&dest[len - i], &src, i);
- if (i < len)
memset (dest, ' ', len - i);
+ memcpy (dest + (len - i), src, i );
}