|
9 | 9 |
|
10 | 10 | static int show_merge_base(struct commit **rev, int rev_nr, int show_all) |
11 | 11 | { |
12 | | - struct commit_list *result; |
| 12 | + struct commit_list *result, *r; |
13 | 13 |
|
14 | 14 | result = get_merge_bases_many_dirty(rev[0], rev_nr - 1, rev + 1); |
15 | 15 |
|
16 | 16 | if (!result) |
17 | 17 | return 1; |
18 | 18 |
|
19 | | - while (result) { |
20 | | - printf("%s\n", oid_to_hex(&result->item->object.oid)); |
| 19 | + for (r = result; r; r = r->next) { |
| 20 | + printf("%s\n", oid_to_hex(&r->item->object.oid)); |
21 | 21 | if (!show_all) |
22 | | - return 0; |
23 | | - result = result->next; |
| 22 | + break; |
24 | 23 | } |
25 | 24 |
|
| 25 | + free_commit_list(result); |
26 | 26 | return 0; |
27 | 27 | } |
28 | 28 |
|
@@ -51,45 +51,47 @@ static struct commit *get_commit_reference(const char *arg) |
51 | 51 |
|
52 | 52 | static int handle_independent(int count, const char **args) |
53 | 53 | { |
54 | | - struct commit_list *revs = NULL; |
55 | | - struct commit_list *result; |
| 54 | + struct commit_list *revs = NULL, *rev; |
56 | 55 | int i; |
57 | 56 |
|
58 | 57 | for (i = count - 1; i >= 0; i--) |
59 | 58 | commit_list_insert(get_commit_reference(args[i]), &revs); |
60 | 59 |
|
61 | | - result = reduce_heads(revs); |
62 | | - if (!result) |
| 60 | + reduce_heads_replace(&revs); |
| 61 | + |
| 62 | + if (!revs) |
63 | 63 | return 1; |
64 | 64 |
|
65 | | - while (result) { |
66 | | - printf("%s\n", oid_to_hex(&result->item->object.oid)); |
67 | | - result = result->next; |
68 | | - } |
| 65 | + for (rev = revs; rev; rev = rev->next) |
| 66 | + printf("%s\n", oid_to_hex(&rev->item->object.oid)); |
| 67 | + |
| 68 | + free_commit_list(revs); |
69 | 69 | return 0; |
70 | 70 | } |
71 | 71 |
|
72 | 72 | static int handle_octopus(int count, const char **args, int show_all) |
73 | 73 | { |
74 | 74 | struct commit_list *revs = NULL; |
75 | | - struct commit_list *result; |
| 75 | + struct commit_list *result, *rev; |
76 | 76 | int i; |
77 | 77 |
|
78 | 78 | for (i = count - 1; i >= 0; i--) |
79 | 79 | commit_list_insert(get_commit_reference(args[i]), &revs); |
80 | 80 |
|
81 | | - result = reduce_heads(get_octopus_merge_bases(revs)); |
| 81 | + result = get_octopus_merge_bases(revs); |
| 82 | + free_commit_list(revs); |
| 83 | + reduce_heads_replace(&result); |
82 | 84 |
|
83 | 85 | if (!result) |
84 | 86 | return 1; |
85 | 87 |
|
86 | | - while (result) { |
87 | | - printf("%s\n", oid_to_hex(&result->item->object.oid)); |
| 88 | + for (rev = result; rev; rev = rev->next) { |
| 89 | + printf("%s\n", oid_to_hex(&rev->item->object.oid)); |
88 | 90 | if (!show_all) |
89 | | - return 0; |
90 | | - result = result->next; |
| 91 | + break; |
91 | 92 | } |
92 | 93 |
|
| 94 | + free_commit_list(result); |
93 | 95 | return 0; |
94 | 96 | } |
95 | 97 |
|
|
0 commit comments