mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-25 20:03:58 +08:00
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
This commit is contained in:
parent
014251eae3
commit
92fbb7592b
@ -1,3 +1,8 @@
|
||||
2004-05-13 Bud Davis <bdavis9659@comcast.net>
|
||||
|
||||
PR fortran/15294
|
||||
* gfortran.fortran-torture/execute/adjustr.f90: New file.
|
||||
|
||||
2004-05-13 Diego Novillo <dnovillo@redhat.com>
|
||||
|
||||
Merge from tree-ssa-20020619-branch. See
|
||||
|
46
gcc/testsuite/gfortran.fortran-torture/execute/adjustr.f90
Normal file
46
gcc/testsuite/gfortran.fortran-torture/execute/adjustr.f90
Normal file
@ -0,0 +1,46 @@
|
||||
! pr 15294 - [gfortran] ADJUSTR intrinsic accesses corrupted pointer
|
||||
!
|
||||
program test_adjustr
|
||||
implicit none
|
||||
integer test_cases
|
||||
parameter (test_cases=13)
|
||||
integer i
|
||||
character(len=10) s1(test_cases), s2(test_cases)
|
||||
s1(1)='A'
|
||||
s2(1)=' A'
|
||||
s1(2)='AB'
|
||||
s2(2)=' AB'
|
||||
s1(3)='ABC'
|
||||
s2(3)=' ABC'
|
||||
s1(4)='ABCD'
|
||||
s2(4)=' ABCD'
|
||||
s1(5)='ABCDE'
|
||||
s2(5)=' ABCDE'
|
||||
s1(6)='ABCDEF'
|
||||
s2(6)=' ABCDEF'
|
||||
s1(7)='ABCDEFG'
|
||||
s2(7)=' ABCDEFG'
|
||||
s1(8)='ABCDEFGH'
|
||||
s2(8)=' ABCDEFGH'
|
||||
s1(9)='ABCDEFGHI'
|
||||
s2(9)=' ABCDEFGHI'
|
||||
s1(10)='ABCDEFGHIJ'
|
||||
s2(10)='ABCDEFGHIJ'
|
||||
s1(11)=''
|
||||
s2(11)=''
|
||||
s1(12)=' '
|
||||
s2(12)=' '
|
||||
s1(13)=' '
|
||||
s2(13)=' '
|
||||
do I = 1,test_cases
|
||||
print*,i
|
||||
print*, 's1 = "', s1(i), '"'
|
||||
print*, 's2 = "', s2(i), '"'
|
||||
print*, 'adjustr(s1) = "', adjustr(s1(i)), '"'
|
||||
if (adjustr(s1(i)).ne.s2(i)) then
|
||||
print*,'fail'
|
||||
call abort
|
||||
endif
|
||||
enddo
|
||||
|
||||
end program test_adjustr
|
@ -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>
|
||||
|
||||
|
@ -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 );
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user