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/make-w32@gnu.org/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 _______________________________________________ Make-w32 mailing list Make-w32@gnu.org http://lists.gnu.org/mailman/listinfo/make-w32