re PR fortran/26509 (incorrect behaviour of error-handler for direct access write)

2006-03-17  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/26509
	* libgfortran.h: Add ERROR_DIRECT_EOR.
	* runtime/error.c (translate_error): Add translation for new error.
	* io/transfer.c (write_buf): Add check for EOR when mode is 
	direct access.

From-SVN: r112198
This commit is contained in:
Jerry DeLisle 2006-03-18 01:56:07 +00:00
parent 8e0524013a
commit 54f9e2781e
4 changed files with 17 additions and 1 deletions

View File

@ -1,3 +1,11 @@
2006-03-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/26509
* libgfortran.h: Add ERROR_DIRECT_EOR.
* runtime/error.c (translate_error): Add translation for new error.
* io/transfer.c (write_buf): Add check for EOR when mode is
direct access.
2006-03-13 Paul Thomas <pault@gcc.gnu.org>
PR fortran/25378

View File

@ -384,7 +384,10 @@ write_buf (st_parameter_dt *dtp, void *buf, size_t nbytes)
{
if (dtp->u.p.current_unit->bytes_left < nbytes)
{
generate_error (&dtp->common, ERROR_EOR, NULL);
if (dtp->u.p.current_unit->flags.access == ACCESS_DIRECT)
generate_error (&dtp->common, ERROR_DIRECT_EOR, NULL);
else
generate_error (&dtp->common, ERROR_EOR, NULL);
return FAILURE;
}

View File

@ -380,6 +380,7 @@ typedef enum
ERROR_INTERNAL,
ERROR_INTERNAL_UNIT,
ERROR_ALLOCATION,
ERROR_DIRECT_EOR,
ERROR_LAST /* Not a real error, the last error # + 1. */
}
error_codes;

View File

@ -431,6 +431,10 @@ translate_error (int code)
p = "Internal unit I/O error";
break;
case ERROR_DIRECT_EOR:
p = "Write exceeds length of DIRECT access record";
break;
default:
p = "Unknown error code";
break;