From: "Kevin Dethlefs" <Demortes2004@aol.com>
> Line 3227 in dg_scripts.c:
> int real_trigger(int vnum)
> {
> int bot = 0, mid;
> int top = top_of_trigt;
>
> /* perform binary search on trigger-table */
> for (;;) {
> mid = (bot + top) / 2;
>
> 3227:if (trig_index[mid]->vnum == vnum)
> return (mid);
> if (bot >= top)
> return (NOTHING);
> if (trig_index[mid]->vnum > vnum)
> top = mid - 1;
> else
> bot = mid + 1;
> }
> }
>
Ack! I thought I'd sent out the patch with the correct real_trigger
function already. Anyway, the logic is busted in this example.
Here's the latest (and working) version:
/* returns the real number of the trigger with given virtual number */
int real_trigger(int vnum)
{
int bot = 0, mid;
int top = top_of_trigt-1;
/* perform binary search on trigger-table */
for (;;) {
mid = (bot + top) / 2;
/* Thanks to Derek Fisk for fixing this loop */
if (bot > top)
return (NOTHING);
if (trig_index[mid]->vnum == vnum)
return (mid);
if (trig_index[mid]->vnum > vnum)
top = mid - 1;
else
bot = mid + 1;
}
}
Welcor
--
+---------------------------------------------------------------+
| FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
| Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
| Newbie List: http://groups.yahoo.com/group/circle-newbies/ |
+---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 06/26/03 PDT