windows-btree-20071031
authorJeffrey Altman <jaltman@secure-endpoints.com>
Wed, 31 Oct 2007 15:33:27 +0000 (15:33 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Wed, 31 Oct 2007 15:33:27 +0000 (15:33 +0000)
commit27ce37c7a0ea23c46c72484719697a900ac0a714
treebaf8743325824c935601451d2da205957c6c6e27
parentcf0d1393f4df2c0a8840aa00db05de7bd221c275
windows-btree-20071031

Add additional validation and error handling code after each call to
getSlot().  If an invalid slot is returned, return NONODE.  If the
invalid slot is returned when extracting a data node, invalidate the
tree.

Modify compareKeys() to always perform a case-insensitive comparison
and only perform a case sensistive comparison if the case-insensitive
one matches.  This ensures the ordering is consistently reported.

Add lock assertions to ensure that all calls are being performed with
the correct locks being held.  There have been some crash reports that
provide stack data that does not appear to be possible unless there is
a race.  However, there are no obvious locations where the race is
taking place and the test suite indicates that all of the correct locks
are being held. We shall see what happens in the field.

For consistency replace all calls to findKey in which the range is
(1,numentries) with calls to getSlot().

Optimize the depth search loop by testing the slot value in the for
statement instead of forcing the loop to be broken later.
src/WINNT/afsd/cm_btree.c