Итак, я разбираю этот 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)
Я следовал шаблону здесь, но проблема в том, что element_ptr
не у меня нет next_sibling()
. Ничего страшного, но тот факт, что element_ptr->next_sibling()
вызывает аварию, не доставляет удовольствия.