* io/inquire.c (inquire_via_unit): Non-opened units should still be
reported by an INQUIRE statement as existing.
* io/transfer.c (data_transfer_init): Never accept negative units.
PR libfortran/20660
* gfortran.dg/negative_unit.f: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97326
138bc75d-0d04-0410-961f-
82ee72b054a4
+2005-03-31 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/20660
+ * gfortran.dg/negative_unit.f: New test.
+
2005-03-31 Mostafa Hagog <mustafa@il.ibm.com>
* gcc.dg/20050330-1.c: New test.
--- /dev/null
+! {dg-do run}
+!
+! PR libfortran/20660 and other bugs (not filed in bugzilla) relating
+! to negative units
+!
+! Bugs submitted by Walt Brainerd
+ integer i
+ logical l
+
+ i = 0
+! gfortran created a 'fort.-1' file and wrote "Hello" in it
+ write (unit=-1, fmt=*, iostat=i) "Hello"
+ if (i <= 0) call abort
+
+ i = 0
+ open (unit=-11, file="xxx", iostat=i)
+ if (i <= 0) call abort
+
+ inquire (unit=-42, exist=l)
+ if (l) call abort
+
+ end
+2005-03-31 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/20660
+ * io/inquire.c (inquire_via_unit): Non-opened units should still be
+ reported by an INQUIRE statement as existing.
+ * io/transfer.c (data_transfer_init): Never accept negative units.
+
2005-03-29 Dale Ranta <dir@lanl.gov>
Francois-Xavier Coudert <coudert@clipper.ens.fr>
const char *p;
if (ioparm.exist != NULL)
- *ioparm.exist = (u != NULL);
+ {
+ if (ioparm.unit >= 0)
+ *ioparm.exist = 1;
+ else
+ *ioparm.exist = 0;
+ }
if (ioparm.opened != NULL)
*ioparm.opened = (u != NULL);
current_unit = get_unit (read_flag);
if (current_unit == NULL)
{ /* Open the unit with some default flags. */
+ if (ioparm.unit < 0)
+ {
+ generate_error (ERROR_BAD_OPTION, "Bad unit number in OPEN statement");
+ library_end ();
+ return;
+ }
memset (&u_flags, '\0', sizeof (u_flags));
u_flags.access = ACCESS_SEQUENTIAL;
u_flags.action = ACTION_READWRITE;