summarylogtreecommitdiffstats
path: root/make-3.82-bug30612.patch
blob: 9867a15b2d081b8dff88f599aa100b8c3f6cfb3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
--- make-3.82-orig/main.c	2010-07-19 17:10:53.000000000 +1000
+++ make-3.82-fix30612//main.c	2010-09-23 23:33:37.908855839 +1000
@@ -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
diff -Naur make-3.82-orig/read.c make-3.82-fix30612//read.c
--- make-3.82-orig/read.c	2010-07-13 11:20:42.000000000 +1000
+++ make-3.82-fix30612//read.c	2010-09-23 23:30:58.018855839 +1000
@@ -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)
diff --git make-3.82-orig/read.c make-3.82-fix30612/read.c
index c87d4a7..b012094 100644
--- make-3.82-orig/read.c
+++ make-3.82-fix30612/read.c
@@ -3044,16 +3044,16 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar,
                       nlen -= (n + 1) - tp;
                       tp = n + 1;
 
-                      /* If we have just "lib(", part of something like
-                         "lib( a b)", go to the next item.  */
-                      if (! nlen)
-                        continue;
-
                       /* We can stop looking now.  */
                       break;
                     }
                 }
               while (*e != '\0');
+
+              /* If we have just "lib(", part of something like "lib( a b)",
+                 go to the next item.  */
+              if (! nlen)
+                continue;
             }
         }