bug-texinfo
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Texinfo 7.0.93 pretest available


From: Eli Zaretskii
Subject: Re: Texinfo 7.0.93 pretest available
Date: Sun, 08 Oct 2023 16:42:05 +0300

> Date: Sun, 08 Oct 2023 14:39:36 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> CC: bug-texinfo@gnu.org
> 
> Sorry, I was mistaken: the Gnulib getdelim is not used here.  Instead,
> this build uses the MinGW implementation of getdelim, and that one has
> a subtle bug, which rears its ugly head because the second argument to
> getline, here:
> 
>           status = getline (&line, &n, input_file);
> 
> is not initialized to any value.  The simple fix below avoids the
> crash and allows the build to run to completion:

The next set of problems is in install-info: the new code in this
version fails to close files, and then Windows doesn't let us
remove/rename them.  The result is that almost all the install-info
tests fail with Permission denied.  The patch below fixes that:

--- install-info/install-info.c~        2023-09-13 20:17:33.000000000 +0300
+++ install-info/install-info.c 2023-10-08 16:28:21.517000000 +0300
@@ -826,13 +826,15 @@ determine_file_type:
       /* Redirect stdin to the file and fork the decompression process
          reading from stdin.  This allows shell metacharacters in filenames. */
       char *command = concat (*compression_program, " -d", "");
+      FILE *f2;
 
       if (fclose (f) < 0)
         return 0;
-      f = freopen (*opened_filename, FOPEN_RBIN, stdin);
+      f2 = freopen (*opened_filename, FOPEN_RBIN, stdin);
       if (!f)
         return 0;
       f = popen (command, "r");
+      fclose (f2);
       if (!f)
         {
           /* Used for error message in calling code. */
@@ -904,7 +906,7 @@ readfile (char *filename, int *sizep,
   /* We need to close the stream, since on some systems the pipe created
      by popen is simulated by a temporary file which only gets removed
      inside pclose.  */
-  if (compression_program)
+  if (compression_program && *compression_program)
     pclose (f);
   else
     fclose (f);



reply via email to

[Prev in Thread] Current Thread [Next in Thread]