@@ -1362,7 +1362,7 @@ impl<H: HHash, T: HCIndexValue> HCIndex for OwnedCIndexExplicit<H, T> {
13621362 let hash = H :: from_u64 ( hash) ;
13631363 match self . entries . binary_search_by_key ( & hash, |& ( h, _) | h) {
13641364 Ok ( i) => self . entries [ i] . 1 ,
1365- Err ( i) => self . entries [ i. max ( 1 ) - 1 ] . 1 ,
1365+ Err ( i) => self . entries [ i. min ( self . entries . len ( ) - 1 ) ] . 1 ,
13661366 }
13671367 }
13681368 fn write_all_values_implicit < W : Write > ( & self , writer : W ) -> Result < usize , IoError > {
@@ -1421,17 +1421,14 @@ impl<H: HHash, T: HCIndexValue> HCIndex for OwnedCIndexExplicitBTree<H, T> {
14211421
14221422 fn get ( & self , hash : u64 ) -> Self :: V {
14231423 let hash = H :: from_u64 ( hash) ;
1424- match self . entries . get ( & hash) {
1425- Some ( v) => * v,
1426- None => match self . entries . range ( ..hash) . next_back ( ) {
1427- Some ( ( _h, v) ) => * v,
1428- None => self
1429- . entries
1430- . iter ( )
1431- . next ( )
1432- . map ( |e| * e. 1 )
1433- . unwrap_or ( T :: zero ( ) ) ,
1434- } ,
1424+ match self . entries . range ( hash..) . next ( ) {
1425+ Some ( ( _k, v) ) => * v,
1426+ // Unwrap only if the tree is empty
1427+ None => self
1428+ . entries
1429+ . last_key_value ( )
1430+ . map ( |( _k, v) | * v)
1431+ . unwrap_or ( T :: zero ( ) ) ,
14351432 }
14361433 }
14371434
@@ -1702,12 +1699,12 @@ impl<'a, H: HHash, T: HCIndexValue> HCIndex for BorrowedCIndexExplicit<'a, H, T>
17021699 if self . depth <= 13 {
17031700 match self . binary_search_get_u32 ( hash as u32 ) {
17041701 Ok ( i) => self . get_entry :: < u32 > ( i) . 1 ,
1705- Err ( i) => self . get_entry :: < u32 > ( i. max ( 1 ) - 1 ) . 1 ,
1702+ Err ( i) => self . get_entry :: < u32 > ( i. min ( self . len ( ) - 1 ) ) . 1 ,
17061703 }
17071704 } else {
17081705 match self . binary_search_get_u64 ( hash) {
17091706 Ok ( i) => self . get_entry :: < u64 > ( i) . 1 ,
1710- Err ( i) => self . get_entry :: < u64 > ( i. max ( 1 ) - 1 ) . 1 ,
1707+ Err ( i) => self . get_entry :: < u64 > ( i. min ( self . len ( ) - 1 ) - 1 ) . 1 ,
17111708 }
17121709 }
17131710 }
0 commit comments