diff options
author | Paul Smith <psmith@gnu.org> | 2009-10-25 18:34:43 +0000 |
---|---|---|
committer | Paul Smith <psmith@gnu.org> | 2009-10-25 18:34:43 +0000 |
commit | 76d2d2ca41df98369945d0558e189f4023718256 (patch) | |
tree | 7bad04916ab780a43cdecdc0f47d8c47275d77b2 | |
parent | 4e51b6d9a4eb7eef2272551d55d8abaadd5f01e3 (diff) | |
download | gunmake-76d2d2ca41df98369945d0558e189f4023718256.tar.gz |
Fix fat-finger bug that left implicit rules with identical stem lengths
being sorted indeterminately.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | NEWS | 16 | ||||
-rw-r--r-- | implicit.c | 6 |
3 files changed, 18 insertions, 10 deletions
@@ -1,3 +1,9 @@ +2009-10-25 Paul Smith <psmith@gnu.org> + + * implicit.c (stemlen_compare): Fix qsort() compare bug that + caused implicit rules with equal stem lengths to be sorted + indeterminately. + 2009-10-24 Paul Smith <psmith@gnu.org> * main.c (usage): Add --eval to the usage string. @@ -1,6 +1,6 @@ GNU make NEWS -*-indented-text-*- History of user-visible changes. - 12 Oct 2009 + 25 Oct 2009 See the end of this file for copyrights and conditions. @@ -20,12 +20,14 @@ Version 3.81.90 existing targets were provided in $?). * WARNING: Backward-incompatibility! - As a result of parser enhancements, two backward-compatibility issues exist: - first, a prerequisite containing an "=" cannot be escaped with a backslash - any longer. You must create a variable containing an "=" and use that - variable in the prerequisite. Second, variable names can no longer contain - whitespace, unless you put the whitespace in a variable and use the - variable. + As a result of parser enhancements, three backward-compatibility issues + exist: first, a prerequisite containing an "=" cannot be escaped with a + backslash any longer. You must create a variable containing an "=" and use + that variable in the prerequisite. Second, variable names can no longer + contain whitespace, unless you put the whitespace in a variable and use the + variable. Third, in previous versions of make it was sometimes not flagged + as an error for explicit and pattern targets to appear in the same rule. + Now this is always reported as an error. * WARNING: Backward-incompatibility! The pattern-specific variables and pattern rules are now applied in the @@ -180,10 +180,10 @@ struct tryrule int stemlen_compare (const void *v1, const void *v2) { - const struct tryrule *r1 = (const struct tryrule *)v1; - const struct tryrule *r2 = (const struct tryrule *)v2; + const struct tryrule *r1 = v1; + const struct tryrule *r2 = v2; int r = r1->stemlen - r2->stemlen; - return r != 0 ? r : (int)(r1->order - r1->order); + return r != 0 ? r : (int)(r1->order - r2->order); } /* Search the pattern rules for a rule with an existing dependency to make |