summary refs log tree commit diff
path: root/pkgs/development/tools/build-managers/gnumake/archives-many-objs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools/build-managers/gnumake/archives-many-objs.patch')
-rw-r--r--pkgs/development/tools/build-managers/gnumake/archives-many-objs.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/pkgs/development/tools/build-managers/gnumake/archives-many-objs.patch b/pkgs/development/tools/build-managers/gnumake/archives-many-objs.patch
new file mode 100644
index 000000000000..73c0381ced45
--- /dev/null
+++ b/pkgs/development/tools/build-managers/gnumake/archives-many-objs.patch
@@ -0,0 +1,48 @@
+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)