Rapidxml вызывает обнаруженную ошибку Stack Smashing при вызове next_sibling()

Итак, я разбираю этот 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() вызывает аварию, не доставляет удовольствия.


person user3216435    schedule 06.01.2015    source источник
comment
После дополнительных исследований я обнаружил, что проблема возникает, когда один родственный узел, в данном случае первый, имеет какие-либо дочерние узлы.   -  person user3216435    schedule 07.01.2015
comment
Требуется небольшой самодостаточный пример. Я использую этот подход регулярно и не имею никаких проблем. Проблема скорее всего в другом...   -  person Roddy    schedule 29.01.2015