http://bugs.gentoo.org/334889
https://savannah.gnu.org/bugs/?30612

revision 1.194
date: 2010-08-13 22:50:14 -0400;  author: psmith;  state: Exp;  lines: +9 -6;  commitid: 4UaslPqQHZTs5wKu;
- Fix Savannah bug #30612: handling of archive references with >1 object

Index: read.c
===================================================================
RCS file: /sources/make/make/read.c,v
retrieving revision 1.193
retrieving revision 1.194
diff -u -p -r1.193 -r1.194
--- read.c	13 Jul 2010 01:20:42 -0000	1.193
+++ read.c	14 Aug 2010 02:50:14 -0000	1.194
@@ -3028,7 +3028,7 @@ parse_file_seq (char **stringp, unsigned
             {
               /* 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 @@ parse_file_seq (char **stringp, unsigned
          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,10 @@ parse_file_seq (char **stringp, unsigned
             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)
