X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=libcds%2Fsrc%2Fstatic_sequence%2Fstatic_sequence_wvtree.cpp;h=e86da89c261e67a27515e04e1b58b6c7bc92af21;hb=05dbf4eefc4fbf2c53cda4491428849ef248e2f3;hp=aa6a885572fcf9e68a7003d311c5fe4e48f6bffa;hpb=4bd816265ae88b4e1631634260384baa559f8967;p=SXSI%2FXMLTree.git diff --git a/libcds/src/static_sequence/static_sequence_wvtree.cpp b/libcds/src/static_sequence/static_sequence_wvtree.cpp index aa6a885..e86da89 100644 --- a/libcds/src/static_sequence/static_sequence_wvtree.cpp +++ b/libcds/src/static_sequence/static_sequence_wvtree.cpp @@ -40,9 +40,10 @@ static_sequence_wvtree::static_sequence_wvtree(uchar * symbols, uint n, wt_coder am->use(); this->c=c; c->use(); - root = new wt_node_internal(symbols, n, 0, c, bmb); - for(uint i=0;iunmap((uint)symbols[i]); + root = new wt_node_internal(symbols, n, 0, c, bmb); + symbols = 0; // Already deleted! +// for(uint i=0;iunmap((uint)symbols[i]); } static_sequence_wvtree::static_sequence_wvtree() {} @@ -62,7 +63,9 @@ uint static_sequence_wvtree::count(uint s) { } uint static_sequence_wvtree::select(uint symbol, uint pos) { - return root->select(am->map(symbol), pos, 0, c)-1; + uint ret = root->select(am->map(symbol), pos, 0, c); + if(ret==((uint)-1)) return (uint)-1; + return ret-1; } uint static_sequence_wvtree::access(uint pos) {