core/make/savannah-bugs.patch
Michal Soltys 140f45145e make: fix bugs 30612, 30723, 31743
A few diffs from official make repository. In particular - 30612 made
compiling dev86 problematic.

Signed-off-by: Michal Soltys <soltys@ziu.info>
Signed-off-by: Juergen Daubert <jue@jue.li>
2011-04-01 08:59:03 +02:00

90 lines
3.1 KiB
Diff

https://savannah.gnu.org/bugs/?30612
https://savannah.gnu.org/bugs/?30723
https://savannah.gnu.org/bugs/?31743 (no longer visible)
--- main.c 2010-07-19 14:10:53.000000000 +0700
+++ main.c 2011-01-12 21:31:30.114891591 +0700
@@ -1,3 +1,4 @@
+
/* Argument parsing and main program of GNU Make.
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
@@ -1138,7 +1139,7 @@
a macro and some compilers (MSVC) don't like conditionals in macros. */
{
const char *features = "target-specific order-only second-expansion"
- " else-if shortest-stem undefine"
+ " else-if shortest-stem undefine oneshell"
#ifndef NO_ARCHIVES
" archives"
#endif
@@ -2093,7 +2094,7 @@
const char *pv = define_makeflags (1, 1);
char *p = alloca (sizeof ("MAKEFLAGS=") + strlen (pv) + 1);
sprintf (p, "MAKEFLAGS=%s", pv);
- putenv (p);
+ putenv (allocated_variable_expand (p));
}
if (ISDB (DB_BASIC))
--- read.c 2010-07-13 08:20:42.000000000 +0700
+++ read.c 2011-01-12 21:31:23.497486028 +0700
@@ -3028,7 +3028,7 @@
{
/* This looks like the first element in an open archive group.
A valid group MUST have ')' as the last character. */
- const char *e = p + nlen;
+ const char *e = p;
do
{
e = next_token (e);
@@ -3084,19 +3084,19 @@
Go to the next item in the string. */
if (flags & PARSEFS_NOGLOB)
{
- NEWELT (concat (2, prefix, tp));
+ NEWELT (concat (2, prefix, tmpbuf));
continue;
}
/* If we get here we know we're doing glob expansion.
TP is a string in tmpbuf. NLEN is no longer used.
We may need to do more work: after this NAME will be set. */
- name = tp;
+ name = tmpbuf;
/* Expand tilde if applicable. */
- if (tp[0] == '~')
+ if (tmpbuf[0] == '~')
{
- tildep = tilde_expand (tp);
+ tildep = tilde_expand (tmpbuf);
if (tildep != 0)
name = tildep;
}
@@ -3152,7 +3152,11 @@
else
{
/* We got a chain of items. Attach them. */
- (*newp)->next = found;
+ if (*newp)
+ (*newp)->next = found;
+ else
+ *newp = found;
+
/* Find and set the new end. Massage names if necessary. */
while (1)
--- read.c 2010/11/06 21:56:24 1.195
+++ read.c 2010/11/30 14:48:53 1.196
@@ -1811,7 +1811,8 @@
int len = strlen(v->name);
gv = lookup_variable (v->name, len);
- if (gv && (gv->origin == o_env_override || gv->origin == o_command))
+ if (gv && v != gv
+ && (gv->origin == o_env_override || gv->origin == o_command))
{
if (v->value != 0)
free (v->value);