- size -= subtree_tags(x, xml_tree::PCDATA_OPEN_TAG_ID);
- if (size < 3) return (uint32_t) size;
- for(; *atts != xml_tree::NIL_TAG_ID; atts++)
- size -= subtree_tags(x, *atts);
+ uint32_t num_texts = subtree_tags(x, xml_tree::PCDATA_OPEN_TAG_ID);
+ uint32_t num_atts = subtree_tags(x, xml_tree::ATTRIBUTE_OPEN_TAG_ID);
+ uint32_t num_att_data = subtree_tags(x, xml_tree::ATTRIBUTE_DATA_OPEN_TAG_ID);
+ size -= num_texts;
+ size -= num_atts;
+ size -= 2*num_att_data;