Fix a bug in TaggedFoll
[SXSI/XMLTree.git] / XMLTree.cpp
index dbc4d83..bb861a9 100644 (file)
@@ -184,7 +184,6 @@ XMLTree *XMLTree::Load(unsigned char *filename, int sample_rate_text)
     \r
     // loads the tags\r
     XML_Tree->Tags = static_sequence::load(fp);\r
-\r
     s_tree+= XML_Tree->Tags->size();\r
 \r
     s_text = ftell(fp);\r
@@ -201,6 +200,10 @@ XMLTree *XMLTree::Load(unsigned char *filename, int sample_rate_text)
     fclose(fp);\r
 \r
     std::cerr << "Tree part is " << s_tree/1024 << " Kbytes,\n"\r
+             << "with node->tagid part " << XML_Tree->Tags->size()/1024 << "Kbytes \n"\r
+             << "size of Tag part : " << XML_Tree->Tags->length () << " elements\n"\r
+             << "sizof(unsigned int)* " <<  XML_Tree->Tags->length () << " = " << \r
+      sizeof(unsigned int) * XML_Tree->Tags->length () / 1024 << " Kbytes\n"\r
              << "Tag part is " << s_tags/1024 << " Kbytes,\n"\r
              << "Text collection is " << s_text/1024 << " Kbytes \n";\r
     return XML_Tree;\r
@@ -536,6 +539,9 @@ treeNode XMLTree::TaggedFoll(treeNode x, TagType tag)
     }\r
 \r
     int r, s;\r
+    if (x == Root() || (next_sibling(Par,x) == -1 ))\r
+      return NULLT;\r
+    \r
     r = (int) Tags->rank(tag, node2tagpos(next_sibling(Par, x))-1);\r
     s = (int) Tags->select(tag, r+1);  // select returns -1 in case that there is no r+1-th tag.\r
     if (s==-1) return NULLT;\r