Fishy find_action() function

From: Katzlberger Thomas (cat@garfield.Vanderbilt.Edu)
Date: 09/23/95


Hi all !

This binary search seems to be fishy:
I suggest moving
	if(bot>=top)
            return (-1);
up some lines to avoid the invalid
index mid==-1 !

Cat.

PS: there might be some other binary-searches
with the same implementation.

int
find_action(int cmd)
{
    int       bot, top, mid;

    bot = 0;
    top = list_top;

    if (top < 0)
        return (-1);

    for (;;)
    {
        mid = (bot + top) >> 1;

	// NEW SUGGESTED LOCATION
        if (bot >= top)
            return (-1);

        if (soc_mess_list[mid].act_nr == cmd)
            return (mid);

    /* ORIGINAL LOCATION
        if (bot >= top)
            return (-1);
    */

        if (soc_mess_list[mid].act_nr > cmd)
            top = --mid;
        else
            bot = ++mid;
    }
}



This archive was generated by hypermail 2b30 : 12/07/00 PST