components/make/patches/30612.patch
author Vladimir Marek <Vladimir.Marek@oracle.com>
Wed, 06 Mar 2013 17:01:56 +0100
branchs11-update
changeset 2517 d7a835a71137
permissions -rw-r--r--
15856019 Archive library support broken in gmake 3.82
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2517
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
     1
This patch is taken from:
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
     2
http://cvs.savannah.gnu.org/viewvc/make/read.c?root=make&r1=1.193&r2=1.194
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
     3
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
     4
Fix various errors parsing archives with multiple objects in the parenthesis,
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
     5
as well as wildcards. Fixes Savannah bug #30612.
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
     6
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
     7
https://savannah.gnu.org/bugs/?30612
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
     8
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
     9
Second patch is a followup for that bug as well:
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    10
http://cvs.savannah.gnu.org/viewvc/make/read.c?root=make&r1=1.200&r2=1.201
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    11
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    12
--- a/read.c	2010/07/13 01:20:42	1.193
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    13
+++ b/read.c	2010/08/14 02:50:14	1.194
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    14
@@ -3028,7 +3028,7 @@
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    15
             {
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    16
               /* This looks like the first element in an open archive group.
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    17
                  A valid group MUST have ')' as the last character.  */
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    18
-              const char *e = p + nlen;
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    19
+              const char *e = p;
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    20
               do
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    21
                 {
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    22
                   e = next_token (e);
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    23
@@ -3084,19 +3084,19 @@
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    24
          Go to the next item in the string.  */
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    25
       if (flags & PARSEFS_NOGLOB)
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    26
         {
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    27
-          NEWELT (concat (2, prefix, tp));
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    28
+          NEWELT (concat (2, prefix, tmpbuf));
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    29
           continue;
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    30
         }
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    31
 
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    32
       /* If we get here we know we're doing glob expansion.
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    33
          TP is a string in tmpbuf.  NLEN is no longer used.
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    34
          We may need to do more work: after this NAME will be set.  */
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    35
-      name = tp;
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    36
+      name = tmpbuf;
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    37
 
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    38
       /* Expand tilde if applicable.  */
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    39
-      if (tp[0] == '~')
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    40
+      if (tmpbuf[0] == '~')
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    41
 	{
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    42
-	  tildep = tilde_expand (tp);
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    43
+	  tildep = tilde_expand (tmpbuf);
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    44
 	  if (tildep != 0)
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    45
             name = tildep;
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    46
 	}
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    47
@@ -3152,7 +3152,10 @@
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    48
             else
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    49
               {
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    50
                 /* We got a chain of items.  Attach them.  */
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    51
-                (*newp)->next = found;
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    52
+                if (*newp)
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    53
+                  (*newp)->next = found;
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    54
+                else
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    55
+                  *newp = found;
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    56
 
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    57
                 /* Find and set the new end.  Massage names if necessary.  */
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    58
                 while (1)
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    59
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    60
--- a/read.c	2011/05/07 14:36:12	1.200
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    61
+++ b/read.c	2011/06/12 16:22:04	1.201
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    62
@@ -3044,16 +3044,16 @@
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    63
                       nlen -= (n + 1) - tp;
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    64
                       tp = n + 1;
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    65
 
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    66
-                      /* If we have just "lib(", part of something like
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    67
-                         "lib( a b)", go to the next item.  */
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    68
-                      if (! nlen)
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    69
-                        continue;
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    70
-
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    71
                       /* We can stop looking now.  */
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    72
                       break;
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    73
                     }
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    74
                 }
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    75
               while (*e != '\0');
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    76
+
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    77
+              /* If we have just "lib(", part of something like "lib( a b)",
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    78
+                 go to the next item.  */
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    79
+              if (! nlen)
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    80
+                continue;
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    81
             }
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    82
         }
d7a835a71137 15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    83