mirror of git://gcc.gnu.org/git/gcc.git
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>
|
2004-05-13 Diego Novillo <dnovillo@redhat.com>
|
||||||
|
|
||||||
Merge from tree-ssa-20020619-branch. See
|
Merge from tree-ssa-20020619-branch. See
|
||||||
|
|
|
@ -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>
|
2004-05-06 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
|
||||||
Steven Bosscher <stevenb@suse.de>
|
Steven Bosscher <stevenb@suse.de>
|
||||||
|
|
||||||
|
|
|
@ -276,12 +276,11 @@ adjustr (char *dest, GFC_INTEGER_4 len, const char *src)
|
||||||
|
|
||||||
i = len;
|
i = len;
|
||||||
while (i > 0 && src[i - 1] == ' ')
|
while (i > 0 && src[i - 1] == ' ')
|
||||||
i++;
|
i--;
|
||||||
|
|
||||||
if (i < len)
|
|
||||||
memcpy (&dest[len - i], &src, i);
|
|
||||||
if (i < len)
|
if (i < len)
|
||||||
memset (dest, ' ', len - i);
|
memset (dest, ' ', len - i);
|
||||||
|
memcpy (dest + (len - i), src, i );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue