@@ -73,11 +73,17 @@ static int in_commit_list(const struct commit_list *want, struct commit *c)
73
73
return 0 ;
74
74
}
75
75
76
+ enum contains_result {
77
+ CONTAINS_UNKNOWN = -1 ,
78
+ CONTAINS_NO = 0 ,
79
+ CONTAINS_YES = 1 ,
80
+ };
81
+
76
82
/*
77
83
* Test whether the candidate or one of its parents is contained in the list.
78
84
* Do not recurse to find out, though, but return -1 if inconclusive.
79
85
*/
80
- static int contains_test (struct commit * candidate ,
86
+ static enum contains_result contains_test (struct commit * candidate ,
81
87
const struct commit_list * want )
82
88
{
83
89
/* was it previously marked as containing a want commit? */
@@ -121,12 +127,13 @@ static void push_to_stack(struct commit *candidate, struct stack *stack)
121
127
stack -> stack [index ].parents = candidate -> parents ;
122
128
}
123
129
124
- static int contains (struct commit * candidate , const struct commit_list * want )
130
+ static enum contains_result contains (struct commit * candidate ,
131
+ const struct commit_list * want )
125
132
{
126
133
struct stack stack = { 0 , 0 , NULL };
127
134
int result = contains_test (candidate , want );
128
135
129
- if (result >= 0 )
136
+ if (result != CONTAINS_UNKNOWN )
130
137
return result ;
131
138
132
139
push_to_stack (candidate , & stack );
@@ -136,22 +143,22 @@ static int contains(struct commit *candidate, const struct commit_list *want)
136
143
struct commit_list * parents = entry -> parents ;
137
144
138
145
if (!parents ) {
139
- commit -> object .flags = UNINTERESTING ;
146
+ commit -> object .flags | = UNINTERESTING ;
140
147
stack .nr -- ;
141
148
}
142
149
/*
143
150
* If we just popped the stack, parents->item has been marked,
144
151
* therefore contains_test will return a meaningful 0 or 1.
145
152
*/
146
153
else switch (contains_test (parents -> item , want )) {
147
- case 1 :
154
+ case CONTAINS_YES :
148
155
commit -> object .flags |= TMP_MARK ;
149
156
stack .nr -- ;
150
157
break ;
151
- case 0 :
158
+ case CONTAINS_NO :
152
159
entry -> parents = parents -> next ;
153
160
break ;
154
- default :
161
+ case CONTAINS_UNKNOWN :
155
162
push_to_stack (parents -> item , & stack );
156
163
break ;
157
164
}
0 commit comments