[PATCH] algol68: Open source files in binary mode
Jose E. Marchesi
jemarch@gnu.org
Sun May 24 19:17:23 GMT 2026
Hello Peter, thank you for the patch.
OK.
> When building a source file with CRLF newlines on Windows, the CRLFs were
> getting converted to LFs, so a86_file_read was returning "short" byte counts
> and tripping an assert. Make sure files get opened in binary mode to avoid this.
>
> gcc/algol68/ChangeLog:
>
> * a68-lang.cc (a68_handle_option): Open file in binary mode.
> * a68-parser-scanner.cc (read_source_file): Open file in binary mode.
> (include_files): Likewise.
> ---
> gcc/algol68/a68-lang.cc | 2 +-
> gcc/algol68/a68-parser-scanner.cc | 4 ++--
> 2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/gcc/algol68/a68-lang.cc b/gcc/algol68/a68-lang.cc
> index df9ef0abf11..0fa38c210e4 100644
> --- a/gcc/algol68/a68-lang.cc
> +++ b/gcc/algol68/a68-lang.cc
> @@ -538,7 +538,7 @@ a68_handle_option (size_t scode,
> case OPT_fmodules_map_file:
> case OPT_fmodules_map_file_:
> {
> - FILE *file = fopen (arg, "r");
> + FILE *file = fopen (arg, "rb");
> if (file == NULL)
> fatal_error (UNKNOWN_LOCATION,
> "cannot open modules map file %<%s%>", arg);
> diff --git a/gcc/algol68/a68-parser-scanner.cc b/gcc/algol68/a68-parser-scanner.cc
> index 097accd5322..4dcbc263a97 100644
> --- a/gcc/algol68/a68-parser-scanner.cc
> +++ b/gcc/algol68/a68-parser-scanner.cc
> @@ -334,7 +334,7 @@ read_source_file (const char *filename)
> bool ret = true;
>
> /* First open the given file. */
> - if (!(FILE_SOURCE_FD (&A68_JOB) = fopen (filename, "r")))
> + if (!(FILE_SOURCE_FD (&A68_JOB) = fopen (filename, "rb")))
> fatal_error (UNKNOWN_LOCATION, "could not open source file %s",
> filename);
> FILE_SOURCE_NAME (&A68_JOB) = ggc_strdup (filename);
> @@ -1076,7 +1076,7 @@ include_files (LINE_T *top)
> t = NO_LINE;
>
> /* Access the file. */
> - fp = fopen (fn, "r");
> + fp = fopen (fn, "rb");
> SCAN_ERROR (fp == NULL, start_l, start_c,
> "error opening included file");
> ssize = a68_file_size (fileno (fp));
More information about the Algol68
mailing list