调用next_sibling()时,Rapidxml导致“Stack Smashing detected”错误

时间:2015-01-06 21:17:23

标签: c++ xml rapidxml

所以,我正在解析这个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()导致崩溃的事实并不好玩。

0 个答案:

没有答案