make-w32
[Top][All Lists]
Advanced

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

Fix for HAVE_DOS_PATHS build on cygwin


From: Bill Hoffman
Subject: Fix for HAVE_DOS_PATHS build on cygwin
Date: Wed, 16 Aug 2006 21:21:21 -0400

I tried compiling 3.81 on cygwin with HAVE_DOS_PATHS,
and found the same crash described in this thread:
http://www.mail-archive.com/address@hidden/msg00861.html

I found the problem and fixed the crash.

Here is the patch:

*** make-3.81/job.c     Sun Mar 19 22:03:04 2006
--- ../make-3.81/job.c  Wed Aug 16 19:42:14 2006
*************** construct_command_argv_internal (char *l
*** 2297,2302 ****
--- 2297,2316 ----
                   0 };
    char*  sh_chars;
    char** sh_cmds;
+ #elif defined(HAVE_DOS_PATHS)
+   /* This is required if the MSYS/Cygwin ports (which do not define
+      WINDOWS32) are compiled with HAVE_DOS_PATHS defined, which uses
+      sh_chars_sh[] directly (see below).  The value is identical to
+      the one above for WINDOWS32 platforms.  */
+   static char sh_chars_sh[] = "#;\"*?[]&|<>(){}$`^";
+   static char *sh_cmds_sh[] = { "cd", "eval", "exec", "exit", "login",
+                            "logout", "set", "umask", "wait", "while", "for",
+                            "case", "if", ":", ".", "break", "continue",
+                            "export", "read", "readonly", "shift", "times",
+                                 "trap", "switch", "test", "echo", 0};
+   char *sh_chars;
+   char **sh_cmds;
+
  #elif defined(__riscos__)
    static char sh_chars[] = "";
    static char *sh_cmds[] = { 0 };
*************** construct_command_argv_internal (char *l
*** 2326,2331 ****
--- 2340,2351 ----
      sh_chars = sh_chars_sh;
    }
  #endif /* WINDOWS32 */
+ #if defined(HAVE_DOS_PATHS) && !defined(WINDOWS32)
+   int slow_flag = 0;
+
+   sh_cmds = sh_cmds_sh;
+   sh_chars = sh_chars_sh;
+ #endif /* WINDOWS32 */

    if (restp != NULL)
      *restp = NULL;

The crash was caused because sh_cmds and sh_chars were only initialized 
if WINDOWS32 was set.   If you add the initialization make seems to work
fine.  I ran make check and all tests passed.

Can this patch be moved into the main tree?

Thanks.

-Bill






reply via email to

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