所以,我正在解析这个xml:
<layout>
<elements>
<first>
<x>centered</x>
<y>300</y>
<text>Button</text>
<function>toggleOption</function>
</first>
<second>no</second>
</elements>
</layout>
它由 rapidxml 库解析。以下是相关的代码行:
rapidxml::xml_document<> doc;
doc.parse<0>(big_buffer);
rapidxml::xml_node<>* element_ptr = doc.first_node("layout")->first_node("elements")->first_node();
while(element_ptr){
printf("FOUND: '%s'\n", element_ptr->name());
element_ptr = element_ptr->next_sibling();
}
运行此原因:
FOUND: 'first'
FOUND: 'second'
*** stack smashing detected ***: ./program terminated
Aborted (core dumped)
我遵循了模式here,但问题是element_ptr
没有next_sibling()
。没有大事,但element_ptr->next_sibling()
导致崩溃的事实并不好玩。