90 lines
3.1 KiB
Diff
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);
|