From: Ann W. H. <aha...@ib...> - 2001-12-06 18:37:56
|
At 09:47 PM 12/5/2001 -0800, John Bellardo wrote: >Hi all, > In updating the FB2 code I happened across the find_proc_field in > par.c: > >list = procedure->prc_output_fields; >for (ptr = list->vec_object, end = ptr + list->vec_count - 1; ptr < end; >ptr++) > { > param = (PRM) *ptr; > if (!strcmp (name, param->prm_name)) > return param->prm_number; > } > > >Notice that we never look at the last field in the vector. Is this >intentional? If it is we should add a comment to the code because it is >unintuitive why (at least for me). Yes we do. Assume a vector of three. O, 1, 2. vec_count = 3. vec + vec_count = a place just beyond the last element. This mechanism is used all over because in the olden days it produced better code than the alternatives. Whenever you see something of the format for (ptr = x, end = x + count; ptr < end; ptr++) end will be beyond the end of the x structure. Regards Ann Regards, Ann www.ibphoenix.com We have answers. |