OSDN Git Service

PR fortran/45308
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 17 Aug 2010 18:08:05 +0000 (18:08 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 17 Aug 2010 18:08:05 +0000 (18:08 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@163312 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/pr45308.f03 [new file with mode: 0644]
libgfortran/ChangeLog
libgfortran/intrinsics/date_and_time.c

index a4c99b8..60c856d 100644 (file)
@@ -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
diff --git a/gcc/testsuite/gfortran.dg/pr45308.f03 b/gcc/testsuite/gfortran.dg/pr45308.f03
new file mode 100644 (file)
index 0000000..ba96104
--- /dev/null
@@ -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
index 9f76797..b0a9c05 100644 (file)
@@ -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
index 21e4320..2ee8e5c 100644 (file)
@@ -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.
-
-   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.
-
-   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.
+   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.
+   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.
+   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);
 }