2017-08-31 55 views
1

我在我的Mac(Darwin <hostname> 16.7.0 Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64 x86_64)上使用標準的./configure ; make ; make install命令安裝了C libxml2 version 2.9.4 library。在試圖運行testXPath命令時,在沒有前綴的XPATH上使用-tree選項時,出現分段錯誤。在XPATH(libxml2)中省略前綴會導致分段錯誤

~/home/libxml2-2.7.2 $ ./testXPath -tree "/abcde" 
In testXPath function... 
Compiled Expression : 0 elements 
    END 
    END 
     END 
     END 
      END 
      END 
       END 
       END 
        END 
        END 
         END 
         END 
          END 
          END 
           END 
           END 
            END 
            END 
             END 
             END 
              END 
              END 
               END 
               END 
                END 
                END 
                END 
                END 
                END 
                END 
                END 
...etc until: 
Segmentation fault: 11 

我挖了一下進入testXPath.c代碼和XPATH的編制似乎是錯誤的。

comp = xmlXPathCompile(BAD_CAST str); 

xmlXPathCompExprPtr回到了它的last成員設置爲-1如果我不提供前綴。這會導致xmlXPathDebugDumpCompExpr()的呼叫出現問題。

在xpath中有一個前綴不會導致錯誤。難道我做錯了什麼?

+0

不知道爲什麼,這是得到downvoted。 – ShivanKaul

+0

不幸的是,SO允許你在沒有任何理由的情況下進行倒退。有時候,這隻意味着有人在度過糟糕的一天。 –

回答

0

testXPath是libxml2測試套件的一部分,預計不會由用戶直接運行。如果你想用的libxml2測試XPath表達式,使用xmllint--xpath選項:

xmllint --xpath 'expr' XMLFILE 
+0

'xmlXPathCompile()',但是,*是*用於用戶庫的一部分。這就是返回錯誤的值。 – ShivanKaul

+0

@ShivanKaul如果您認爲'xmlXPathCompile'中存在錯誤,請提交一個[錯誤報告](https://bugzilla.gnome.org/)。 – nwellnhof