-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
log -L: fix overlapping input ranges
The existing code was too defensive, and would trigger the assert in range_set_append() if the user gave overlapping ranges. The intent was always to define overlapping ranges as just the union of all of them, as evidenced by the call to sort_and_merge_range_set(). (Which was already used, unlike what the comment said.) Fix by splitting out the meat of range_set_append() to a new _unsafe() function that lacks the paranoia. sort_and_merge_range_set will fix up the ranges, so we don't need the checks there. Signed-off-by: Thomas Rast <trast@inf.ethz.ch> Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
Thomas Rast
authored and
Junio C Hamano
committed
Apr 5, 2013
1 parent
4596f19
commit 2096188
Showing
5 changed files
with
366 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
commit 4659538844daa2849b1a9e7d6fadb96fcd26fc83 | ||
Author: Thomas Rast <trast@student.ethz.ch> | ||
Date: Thu Feb 28 10:48:43 2013 +0100 | ||
|
||
change back to complete line | ||
|
||
diff --git a/a.c b/a.c | ||
--- a/a.c | ||
+++ b/a.c | ||
@@ -18,5 +18,7 @@ | ||
int main () | ||
{ | ||
printf("%ld\n", f(15)); | ||
return 0; | ||
-} | ||
\ No newline at end of file | ||
+} | ||
+ | ||
+/* incomplete lines are bad! */ | ||
|
||
commit 100b61a6f2f720f812620a9d10afb3a960ccb73c | ||
Author: Thomas Rast <trast@student.ethz.ch> | ||
Date: Thu Feb 28 10:48:10 2013 +0100 | ||
|
||
change to an incomplete line at end | ||
|
||
diff --git a/a.c b/a.c | ||
--- a/a.c | ||
+++ b/a.c | ||
@@ -18,5 +18,5 @@ | ||
int main () | ||
{ | ||
printf("%ld\n", f(15)); | ||
return 0; | ||
-} | ||
+} | ||
\ No newline at end of file | ||
|
||
commit a6eb82647d5d67f893da442f8f9375fd89a3b1e2 | ||
Author: Thomas Rast <trast@student.ethz.ch> | ||
Date: Thu Feb 28 10:45:16 2013 +0100 | ||
|
||
touch both functions | ||
|
||
diff --git a/a.c b/a.c | ||
--- a/a.c | ||
+++ b/a.c | ||
@@ -3,9 +3,9 @@ | ||
-int f(int x) | ||
+long f(long x) | ||
{ | ||
int s = 0; | ||
while (x) { | ||
x >>= 1; | ||
s++; | ||
} | ||
return s; | ||
} | ||
@@ -17,5 +17,5 @@ | ||
int main () | ||
{ | ||
- printf("%d\n", f(15)); | ||
+ printf("%ld\n", f(15)); | ||
return 0; | ||
} | ||
|
||
commit f04fb20f2c77850996cba739709acc6faecc58f7 | ||
Author: Thomas Rast <trast@student.ethz.ch> | ||
Date: Thu Feb 28 10:44:55 2013 +0100 | ||
|
||
change f() | ||
|
||
diff --git a/a.c b/a.c | ||
--- a/a.c | ||
+++ b/a.c | ||
@@ -3,8 +3,9 @@ | ||
int f(int x) | ||
{ | ||
int s = 0; | ||
while (x) { | ||
x >>= 1; | ||
s++; | ||
} | ||
+ return s; | ||
} | ||
|
||
commit de4c48ae814792c02a49c4c3c0c757ae69c55f6a | ||
Author: Thomas Rast <trast@student.ethz.ch> | ||
Date: Thu Feb 28 10:44:48 2013 +0100 | ||
|
||
initial | ||
|
||
diff --git a/a.c b/a.c | ||
--- /dev/null | ||
+++ b/a.c | ||
@@ -0,0 +3,8 @@ | ||
+int f(int x) | ||
+{ | ||
+ int s = 0; | ||
+ while (x) { | ||
+ x >>= 1; | ||
+ s++; | ||
+ } | ||
+} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,187 @@ | ||
commit 4659538844daa2849b1a9e7d6fadb96fcd26fc83 | ||
Author: Thomas Rast <trast@student.ethz.ch> | ||
Date: Thu Feb 28 10:48:43 2013 +0100 | ||
|
||
change back to complete line | ||
|
||
diff --git a/a.c b/a.c | ||
--- a/a.c | ||
+++ b/a.c | ||
@@ -4,19 +4,21 @@ | ||
long f(long x) | ||
{ | ||
int s = 0; | ||
while (x) { | ||
x >>= 1; | ||
s++; | ||
} | ||
return s; | ||
} | ||
|
||
/* | ||
* This is only an example! | ||
*/ | ||
|
||
int main () | ||
{ | ||
printf("%ld\n", f(15)); | ||
return 0; | ||
-} | ||
\ No newline at end of file | ||
+} | ||
+ | ||
+/* incomplete lines are bad! */ | ||
|
||
commit 100b61a6f2f720f812620a9d10afb3a960ccb73c | ||
Author: Thomas Rast <trast@student.ethz.ch> | ||
Date: Thu Feb 28 10:48:10 2013 +0100 | ||
|
||
change to an incomplete line at end | ||
|
||
diff --git a/a.c b/a.c | ||
--- a/a.c | ||
+++ b/a.c | ||
@@ -4,19 +4,19 @@ | ||
long f(long x) | ||
{ | ||
int s = 0; | ||
while (x) { | ||
x >>= 1; | ||
s++; | ||
} | ||
return s; | ||
} | ||
|
||
/* | ||
* This is only an example! | ||
*/ | ||
|
||
int main () | ||
{ | ||
printf("%ld\n", f(15)); | ||
return 0; | ||
-} | ||
+} | ||
\ No newline at end of file | ||
|
||
commit 39b6eb2d5b706d3322184a169f666f25ed3fbd00 | ||
Author: Thomas Rast <trast@student.ethz.ch> | ||
Date: Thu Feb 28 10:45:41 2013 +0100 | ||
|
||
touch comment | ||
|
||
diff --git a/a.c b/a.c | ||
--- a/a.c | ||
+++ b/a.c | ||
@@ -3,19 +3,19 @@ | ||
long f(long x) | ||
{ | ||
int s = 0; | ||
while (x) { | ||
x >>= 1; | ||
s++; | ||
} | ||
return s; | ||
} | ||
|
||
/* | ||
- * A comment. | ||
+ * This is only an example! | ||
*/ | ||
|
||
int main () | ||
{ | ||
printf("%ld\n", f(15)); | ||
return 0; | ||
} | ||
|
||
commit a6eb82647d5d67f893da442f8f9375fd89a3b1e2 | ||
Author: Thomas Rast <trast@student.ethz.ch> | ||
Date: Thu Feb 28 10:45:16 2013 +0100 | ||
|
||
touch both functions | ||
|
||
diff --git a/a.c b/a.c | ||
--- a/a.c | ||
+++ b/a.c | ||
@@ -3,19 +3,19 @@ | ||
-int f(int x) | ||
+long f(long x) | ||
{ | ||
int s = 0; | ||
while (x) { | ||
x >>= 1; | ||
s++; | ||
} | ||
return s; | ||
} | ||
|
||
/* | ||
* A comment. | ||
*/ | ||
|
||
int main () | ||
{ | ||
- printf("%d\n", f(15)); | ||
+ printf("%ld\n", f(15)); | ||
return 0; | ||
} | ||
|
||
commit f04fb20f2c77850996cba739709acc6faecc58f7 | ||
Author: Thomas Rast <trast@student.ethz.ch> | ||
Date: Thu Feb 28 10:44:55 2013 +0100 | ||
|
||
change f() | ||
|
||
diff --git a/a.c b/a.c | ||
--- a/a.c | ||
+++ b/a.c | ||
@@ -3,18 +3,19 @@ | ||
int f(int x) | ||
{ | ||
int s = 0; | ||
while (x) { | ||
x >>= 1; | ||
s++; | ||
} | ||
+ return s; | ||
} | ||
|
||
/* | ||
* A comment. | ||
*/ | ||
|
||
int main () | ||
{ | ||
printf("%d\n", f(15)); | ||
return 0; | ||
} | ||
|
||
commit de4c48ae814792c02a49c4c3c0c757ae69c55f6a | ||
Author: Thomas Rast <trast@student.ethz.ch> | ||
Date: Thu Feb 28 10:44:48 2013 +0100 | ||
|
||
initial | ||
|
||
diff --git a/a.c b/a.c | ||
--- /dev/null | ||
+++ b/a.c | ||
@@ -0,0 +3,18 @@ | ||
+int f(int x) | ||
+{ | ||
+ int s = 0; | ||
+ while (x) { | ||
+ x >>= 1; | ||
+ s++; | ||
+ } | ||
+} | ||
+ | ||
+/* | ||
+ * A comment. | ||
+ */ | ||
+ | ||
+int main () | ||
+{ | ||
+ printf("%d\n", f(15)); | ||
+ return 0; | ||
+} |
Oops, something went wrong.