0

プロジェクトで xml 解析に関する問題があります。2 つの xml パーサー ライブラリ (xmlParser と TinyXML) を試しましたが、コードの同じポイントで同じエラーが発生しました。最初は xmlParser のバグだと思っていましたが、TinyXML で同じエラーを見つけた後、コードのどこか、または私の理解に違いないと思います。これを修正する方法がわかりません。詳細を説明しましょう

これがxmlParserを使用して切り取られた私のコードです

XMLResults xe;
printf("%s\n", xmlData);  //<XML SUC='1'></XML>
printf("Before parsing XML\n");
XMLNode xMainNode = XMLNode::parseString(xmlData, "XML", &xe);
printf("After parsing XML\n");
if(xe.error!=eXMLErrorNoXMLTagFound) {
    bool suc = (bool)atoi(xMainNode.getAttribute("SUC"));
}else {
    printf("non-xml data\n");
}

TinyXML を使用して切り取られた別の画像

TiXmlDocument   xmlDoc;
printf("%s\n", xmlData);  //<XML SUC='1'></XML>
printf("Before parsing XML\n");
xmlDoc.Parse(xmlData, 0, TIXML_DEFAULT_ENCODING);
TiXmlElement    *xMainElem = xmlDoc.RootElement();
printf("After parsing XML\n");

そして結果:

<XML SUC='1'></XML>
Before parsing XML
//and then crash 

xmlData は

char xmlData[4096];

これはソケット 'recvfrom()' から受信されます。わかりませんが、正しく出力されます。上記の抜粋されたコードはシグナル関数にあります。ソケットがxmlDataを受信した場合にのみ実行されるとしましょう。

最初のシグナル (または最初の実行) でのクラッシュではありませんが、その後最終的にクラッシュし、3 ses - 10 分 (予測不能) かかります。

タイトルの通り、このコードは iOS では正常に動作しますが、Mac ではクラッシュします。

4

0 に答える 0