Problem: Finding a patch number can be a bit slow.
Solution: Use binary search. (closes #7279)
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1973,
/**/
1972,
/**/
int
has_patch(int n)
{
- int i;
+ int h, m, l;
- for (i = 0; included_patches[i] != 0; ++i)
- if (included_patches[i] == n)
+ // Perform a binary search.
+ l = 0;
+ h = (int)(sizeof(included_patches) / sizeof(included_patches[0])) - 1;
+ while (l < h)
+ {
+ m = (l + h) / 2;
+ if (included_patches[m] == n)
return TRUE;
+ if (included_patches[m] < n)
+ h = m;
+ else
+ l = m + 1;
+ }
return FALSE;
}
#endif
{
msg_puts(_("\nIncluded patches: "));
first = -1;
- // find last one
- for (i = 0; included_patches[i] != 0; ++i)
- ;
+ i = (int)(sizeof(included_patches) / sizeof(included_patches[0])) - 1;
while (--i >= 0)
{
if (first < 0)