https://gcc.gnu.org/g:9742769e0d72a98988bf151d6674ab597be43493

commit r17-706-g9742769e0d72a98988bf151d6674ab597be43493
Author: Peter Damianov <[email protected]>
Date:   Sun May 24 14:59:46 2026 -0400

    algol68: Open source files in binary mode
    
    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.

Diff:
---
 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 df9ef0abf119..0fa38c210e4a 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 097accd5322d..4dcbc263a970 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));

Reply via email to