X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=libcds%2Fsrc%2Fstatic_sequence%2Fstatic_sequence_wvtree_noptrs.cpp;h=a457afd89c70bb63c7c1672d8ed0cbc635901079;hb=82bd00eaaece0e0bec72dce91ab670c89e6dccd9;hp=c1c114bb629fbd96147ada7785cc84c88862b97d;hpb=3d052e0d8f4d581503b9fe53e956b3fc25b0764a;p=SXSI%2FXMLTree.git diff --git a/libcds/src/static_sequence/static_sequence_wvtree_noptrs.cpp b/libcds/src/static_sequence/static_sequence_wvtree_noptrs.cpp index c1c114b..a457afd 100644 --- a/libcds/src/static_sequence/static_sequence_wvtree_noptrs.cpp +++ b/libcds/src/static_sequence/static_sequence_wvtree_noptrs.cpp @@ -21,7 +21,7 @@ #include -static_sequence_wvtree_noptrs::static_sequence_wvtree_noptrs(uint * symbols, uint n, static_bitsequence_builder * bmb, alphabet_mapper * am) { +static_sequence_wvtree_noptrs::static_sequence_wvtree_noptrs(uint * symbols, uint n, static_bitsequence_builder * bmb, alphabet_mapper * am, bool deleteSymbols) { this->n=n; this->am=am; am->use(); @@ -39,6 +39,13 @@ static_sequence_wvtree_noptrs::static_sequence_wvtree_noptrs(uint * symbols, uin uint * new_symb = new uint[n+to_add]; for(uint i=0;iunmap(symbols[i]); - delete [] new_symb; - delete [] oc; + + if (!deleteSymbols) + for(uint i=0;iunmap(symbols[i]); + +// delete [] new_symb; // already deleted in build_level()! + delete [] oc; } static_sequence_wvtree_noptrs::static_sequence_wvtree_noptrs() { @@ -381,7 +391,11 @@ uint static_sequence_wvtree_noptrs::size() { } void static_sequence_wvtree_noptrs::build_level(uint **bm, uint *symbols, uint level, uint length, uint offset) { - if(level==height) return; + if(level==height) + { + delete [] symbols; + return; + } uint cleft=0; for(uint i=0;i