From 2bf5905db5098392245fa5585d1418fe97558aa4 Mon Sep 17 00:00:00 2001 From: fclaude Date: Sun, 8 Mar 2009 02:26:20 +0000 Subject: [PATCH] Bug fix git-svn-id: svn+ssh://idea.nguyen.vg/svn/sxsi/trunk/XMLTree@212 3cdefd35-fc62-479d-8e8d-bae585ffb9ca --- libcds/src/static_bitsequence/static_bitsequence_brw32.cpp | 2 ++ libcds/src/static_bitsequence/static_bitsequence_brw32.h | 1 + libcds/src/static_bitsequence/static_bitsequence_rrr02.cpp | 6 +++--- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/libcds/src/static_bitsequence/static_bitsequence_brw32.cpp b/libcds/src/static_bitsequence/static_bitsequence_brw32.cpp index 2ca4eed..f671a72 100644 --- a/libcds/src/static_bitsequence/static_bitsequence_brw32.cpp +++ b/libcds/src/static_bitsequence/static_bitsequence_brw32.cpp @@ -238,6 +238,7 @@ uint static_bitsequence_brw32::select1(uint x) { // then sequential search using popcount over a int // then sequential search using popcount over a char // then sequential search bit a bit + if(x>ones) return (uint)(-1); //binary search over first level rank structure uint l=0, r=n/s; @@ -299,6 +300,7 @@ uint static_bitsequence_brw32::select0(uint x) { // then sequential search using popcount over a int // then sequential search using popcount over a char // then sequential search bit a bit + if(x>n-ones) return (uint)(-1); //binary search over first level rank structure if(x==0) return 0; diff --git a/libcds/src/static_bitsequence/static_bitsequence_brw32.h b/libcds/src/static_bitsequence/static_bitsequence_brw32.h index 64fcf1b..af95a4a 100644 --- a/libcds/src/static_bitsequence/static_bitsequence_brw32.h +++ b/libcds/src/static_bitsequence/static_bitsequence_brw32.h @@ -46,6 +46,7 @@ class static_bitsequence_brw32 : public static_bitsequence { private: uint *data; +uint n; //bool owner; uint n,integers; uint factor,b,s; diff --git a/libcds/src/static_bitsequence/static_bitsequence_rrr02.cpp b/libcds/src/static_bitsequence/static_bitsequence_rrr02.cpp index aee722e..47a382e 100644 --- a/libcds/src/static_bitsequence/static_bitsequence_rrr02.cpp +++ b/libcds/src/static_bitsequence/static_bitsequence_rrr02.cpp @@ -162,8 +162,8 @@ uint static_bitsequence_rrr02::rank1(uint i) { } uint static_bitsequence_rrr02::select0(uint i) { - if(i==0) return -1; - if(i>len-ones) return len; + if(i==0) return (uint)-1; + if(i>len-ones) return (uint)-1; // Search over partial sums uint start=0; uint end=C_sampling_len-1; @@ -219,7 +219,7 @@ uint static_bitsequence_rrr02::select0(uint i) { uint static_bitsequence_rrr02::select1(uint i) { if(i==0) return -1; - if(i>ones) return len; + if(i>ones) return -1; // Search over partial sums uint start=0; uint end=C_sampling_len-1; -- 2.17.1