re PR fortran/45308 ([F2003] DATE_AND_TIME does _not_ blank-pad strings)
PR fortran/45308 * intrinsics/date_and_time.c (date_and_time): Pass __{zone,time,date}_len instead of {ZONE,TIME,DATE}_LEN as second argument to fstrcpy. Drop asserts. Adjust comment to the F2003 wording from the F95 wording. * gfortran.dg/pr45308.f03: New test. From-SVN: r163312
This commit is contained in:
parent
35d3d688fc
commit
47b914698d
@ -1,3 +1,8 @@
|
||||
2010-08-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR fortran/45308
|
||||
* gfortran.dg/pr45308.f03: New test.
|
||||
|
||||
2010-08-17 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/45296
|
||||
|
9
gcc/testsuite/gfortran.dg/pr45308.f03
Normal file
9
gcc/testsuite/gfortran.dg/pr45308.f03
Normal file
@ -0,0 +1,9 @@
|
||||
! PR fortran/45308
|
||||
! { dg-do run }
|
||||
character(len=36) :: date, time
|
||||
date = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
||||
time = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
||||
call date_and_time (date, time)
|
||||
if (index (date, 'a') /= 0 .or. index (time, 'a') /= 0) &
|
||||
call abort
|
||||
end
|
@ -1,3 +1,10 @@
|
||||
2010-08-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR fortran/45308
|
||||
* intrinsics/date_and_time.c (date_and_time): Pass __{zone,time,date}_len
|
||||
instead of {ZONE,TIME,DATE}_LEN as second argument to fstrcpy. Drop
|
||||
asserts. Adjust comment to the F2003 wording from the F95 wording.
|
||||
|
||||
2010-08-14 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||
|
||||
PR libfortran/44931
|
||||
|
@ -93,29 +93,25 @@ gmtime_r (const time_t * timep, struct tm * result)
|
||||
|
||||
Arguments:
|
||||
|
||||
DATE (optional) shall be scalar and of type default character, and
|
||||
shall be of length at least 8 in order to contain the complete
|
||||
value. It is an INTENT(OUT) argument. Its leftmost 8 characters
|
||||
are assigned a value of the form CCYYMMDD, where CC is the century,
|
||||
YY the year within the century, MM the month within the year, and
|
||||
DD the day within the month. If there is no date available, they
|
||||
are assigned blanks.
|
||||
DATE (optional) shall be scalar and of type default character.
|
||||
It is an INTENT(OUT) argument. It is assigned a value of the
|
||||
form CCYYMMDD, where CC is the century, YY the year within the
|
||||
century, MM the month within the year, and DD the day within the
|
||||
month. If there is no date available, they are assigned blanks.
|
||||
|
||||
TIME (optional) shall be scalar and of type default character, and
|
||||
shall be of length at least 10 in order to contain the complete
|
||||
value. It is an INTENT(OUT) argument. Its leftmost 10 characters
|
||||
are assigned a value of the form hhmmss.sss, where hh is the hour
|
||||
of the day, mm is the minutes of the hour, and ss.sss is the
|
||||
seconds and milliseconds of the minute. If there is no clock
|
||||
available, they are assigned blanks.
|
||||
TIME (optional) shall be scalar and of type default character.
|
||||
It is an INTENT(OUT) argument. It is assigned a value of the
|
||||
form hhmmss.sss, where hh is the hour of the day, mm is the
|
||||
minutes of the hour, and ss.sss is the seconds and milliseconds
|
||||
of the minute. If there is no clock available, they are assigned
|
||||
blanks.
|
||||
|
||||
ZONE (optional) shall be scalar and of type default character, and
|
||||
shall be of length at least 5 in order to contain the complete
|
||||
value. It is an INTENT(OUT) argument. Its leftmost 5 characters
|
||||
are assigned a value of the form [+-]hhmm, where hh and mm are the
|
||||
time difference with respect to Coordinated Universal Time (UTC) in
|
||||
hours and parts of an hour expressed in minutes, respectively. If
|
||||
there is no clock available, they are assigned blanks.
|
||||
ZONE (optional) shall be scalar and of type default character.
|
||||
It is an INTENT(OUT) argument. It is assigned a value of the
|
||||
form [+-]hhmm, where hh and mm are the time difference with
|
||||
respect to Coordinated Universal Time (UTC) in hours and parts
|
||||
of an hour expressed in minutes, respectively. If there is no
|
||||
clock available, they are assigned blanks.
|
||||
|
||||
VALUES (optional) shall be of type default integer and of rank
|
||||
one. It is an INTENT(OUT) argument. Its size shall be at least
|
||||
@ -311,22 +307,13 @@ date_and_time (char *__date, char *__time, char *__zone,
|
||||
}
|
||||
|
||||
if (__zone)
|
||||
{
|
||||
assert (__zone_len >= ZONE_LEN);
|
||||
fstrcpy (__zone, ZONE_LEN, zone, ZONE_LEN);
|
||||
}
|
||||
fstrcpy (__zone, __zone_len, zone, ZONE_LEN);
|
||||
|
||||
if (__time)
|
||||
{
|
||||
assert (__time_len >= TIME_LEN);
|
||||
fstrcpy (__time, TIME_LEN, timec, TIME_LEN);
|
||||
}
|
||||
fstrcpy (__time, __time_len, timec, TIME_LEN);
|
||||
|
||||
if (__date)
|
||||
{
|
||||
assert (__date_len >= DATE_LEN);
|
||||
fstrcpy (__date, DATE_LEN, date, DATE_LEN);
|
||||
}
|
||||
fstrcpy (__date, __date_len, date, DATE_LEN);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user