summaryrefslogtreecommitdiff
path: root/sys-devel/make/files/make-3.82-archives-many-objs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'sys-devel/make/files/make-3.82-archives-many-objs.patch')
-rw-r--r--sys-devel/make/files/make-3.82-archives-many-objs.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/sys-devel/make/files/make-3.82-archives-many-objs.patch b/sys-devel/make/files/make-3.82-archives-many-objs.patch
new file mode 100644
index 00000000000..abdcd322801
--- /dev/null
+++ b/sys-devel/make/files/make-3.82-archives-many-objs.patch
@@ -0,0 +1,60 @@
+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)