From: fclaude Date: Sun, 8 Mar 2009 07:06:57 +0000 (+0000) Subject: more fixes X-Git-Url: http://git.nguyen.vg/gitweb/?a=commitdiff_plain;h=279e273b1928bbef4c960d6ce9b77f9c3fbecef9;hp=82b89c86269e04916a4aef964977ee738d8f2927;p=SXSI%2FXMLTree.git more fixes git-svn-id: svn+ssh://idea.nguyen.vg/svn/sxsi/trunk/XMLTree@218 3cdefd35-fc62-479d-8e8d-bae585ffb9ca --- diff --git a/libcds/src/static_sequence/wt_node_internal.cpp b/libcds/src/static_sequence/wt_node_internal.cpp index d2d0fa8..9dc87a2 100644 --- a/libcds/src/static_sequence/wt_node_internal.cpp +++ b/libcds/src/static_sequence/wt_node_internal.cpp @@ -142,19 +142,22 @@ uint wt_node_internal::rank(uint symbol, uint pos, uint l, wt_coder * c) { uint wt_node_internal::select(uint symbol, uint pos, uint l, wt_coder * c) { bool is_set = c->is_set(symbol, l); + uint ret = 0; if(!is_set) { if(left_child==NULL) return (uint)(-1); uint new_pos = left_child->select(symbol, pos, l+1,c); if(new_pos+1==0) return (uint)(-1); - return bitmap->select0(new_pos)+1; + ret = bitmap->select0(new_pos)+1; } else { if(right_child==NULL) return (uint)(-1); uint new_pos = right_child->select(symbol, pos, l+1,c); if(new_pos+1==0) return (uint)(-1); - return bitmap->select1(new_pos)+1; + ret = bitmap->select1(new_pos)+1; } + if(ret==0) return (uint)-1; + return ret; } uint wt_node_internal::access(uint pos) {