OSDN Git Service

2010-09-21 Jerry DeLisle <jvdelisle@gcc.gnu.org>
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 22 Sep 2010 03:10:24 +0000 (03:10 +0000)
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 22 Sep 2010 03:10:24 +0000 (03:10 +0000)
PR libfortran/45723
* io/open.c (new_unit): On POSITION_APPEND don't seek if file length is
zero.

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

libgfortran/ChangeLog
libgfortran/io/open.c

index bd4243f..8411513 100644 (file)
@@ -1,3 +1,9 @@
+2010-09-21  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libfortran/45723
+       * io/open.c (new_unit): On POSITION_APPEND don't seek if file length is
+       zero.
+
 2010-09-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR libfortran/45532
@@ -6,7 +12,8 @@
 
 2010-09-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
 
-       * intrinsics/pack_generic.c (pack): Add missing return and fix whitespace.
+       * intrinsics/pack_generic.c (pack): Add missing return and fix
+       whitespace.
        * intrinsics/cshift0.c (cshift0): Fix whitespace.
        * intrinsics/unpack_generic.c (unpack1, unpack0): Fix whitespace.
 
index be8f4bb..d7448c0 100644 (file)
@@ -555,7 +555,7 @@ new_unit (st_parameter_open *opp, gfc_unit *u, unit_flags * flags)
 
   if (flags->position == POSITION_APPEND)
     {
-      if (sseek (u->s, 0, SEEK_END) < 0)
+      if (file_size (opp->file, opp->file_len) > 0 && sseek (u->s, 0, SEEK_END) < 0)
        generate_error (&opp->common, LIBERROR_OS, NULL);
       u->endfile = AT_ENDFILE;
     }